From 1a8c26b88674694e6138b390c1a41598ef04e642 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 12 Mar 2018 15:11:59 +0000 Subject: [PATCH 01/99] jupyter --- C/index.c | 8 +- CMakeLists.txt | 2 +- CXX/yapi.cpp | 45 ++-- CXX/yapie.hh | 6 +- CXX/yapq.hh | 4 +- H/locals.h | 5 +- cmake/java.cmake | 2 +- docs/tut.ipynb | 26 +-- os/iopreds.c | 1 - os/readterm.c | 5 +- os/streams.c | 11 +- packages/gecode/dev/code-generator.py | 2 +- packages/myddas/sqlite3/myddas_sqlite3.c | 4 +- packages/python/pl2py.c | 4 + packages/python/py2pl.c | 6 +- packages/python/py4yap.h | 6 +- packages/python/pybips.c | 2 +- packages/python/pyio.c | 178 ++++++++++----- packages/python/pypreds.c | 7 +- packages/python/python.pl | 2 +- packages/python/swig/CMakeLists.txt | 6 +- packages/python/swig/prolog/yapi.yap | 15 +- packages/python/swig/setup.py.in | 20 +- packages/python/swig/yap4py/__init__.py.in | 15 +- packages/python/swig/yap4py/yapi.py | 21 +- packages/python/yap_kernel/CMakeLists.txt | 9 +- packages/python/yap_kernel/setup.py | 13 +- .../yap_kernel/yap_ipython/core/historyapp.py | 20 +- .../yap_ipython/core/interactiveshell.py | 10 +- .../yap_kernel/yap_ipython/prolog/jupyter.yap | 65 +++--- .../python/yap_kernel/yap_ipython/yapi.py | 203 +++++++++++------- pl/consult.yap | 26 ++- 32 files changed, 442 insertions(+), 307 deletions(-) diff --git a/C/index.c b/C/index.c index 6fd571344..68172dfef 100755 --- a/C/index.c +++ b/C/index.c @@ -2954,7 +2954,7 @@ yamop *Yap_PredIsIndexable(PredEntry *ap, UInt NSlots, yamop *next_pc) { if (!Yap_growheap(FALSE, LOCAL_Error_Size, NULL)) { CleanCls(&cint); Yap_Error(RESOURCE_ERROR_HEAP, TermNil, LOCAL_ErrorMessage); - return FAILCODE; + return NULL; } } else if (setjres == 4) { restore_machine_regs(); @@ -2962,7 +2962,7 @@ yamop *Yap_PredIsIndexable(PredEntry *ap, UInt NSlots, yamop *next_pc) { if (!Yap_growtrail(LOCAL_Error_Size, FALSE)) { CleanCls(&cint); Yap_Error(RESOURCE_ERROR_TRAIL, TermNil, LOCAL_ErrorMessage); - return FAILCODE; + return NULL; } } else if (setjres != 0) { restore_machine_regs(); @@ -2970,7 +2970,7 @@ yamop *Yap_PredIsIndexable(PredEntry *ap, UInt NSlots, yamop *next_pc) { if (!Yap_growheap(FALSE, LOCAL_Error_Size, NULL)) { Yap_Error(RESOURCE_ERROR_HEAP, TermNil, LOCAL_ErrorMessage); CleanCls(&cint); - return FAILCODE; + return NULL; } } restart_index: @@ -2983,7 +2983,7 @@ restart_index: if (compile_index(&cint) == (UInt)FAILCODE) { Yap_ReleaseCMem(&cint); CleanCls(&cint); - return FAILCODE; + return NULL; } #if DEBUG if (GLOBAL_Option['i' - 'a' + 1]) { diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c0410eb0..825093d50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -689,10 +689,10 @@ if (PYTHONLIBS_FOUND AND SWIG_FOUND) find_python_module(wheel) find_python_module(setuptools) find_python_module(backcall) - if (PY_JUPYTER AND PY_WHEEL AND PY_SETUPTOOLS AND PY_BACKCALL) add_subdirectory(packages/python/yap_kernel) ENDIF () + endif () diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index c30e903e5..af5736499 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -239,10 +239,10 @@ Term &YAPTerm::operator[](arity_t i) { tf = TailOfTerm(t0); RECOVER_MACHINE_REGS(); tf = RepPair(tf)[i]; - } - RECOVER_MACHINE_REGS(); - Yap_Error(TYPE_ERROR_COMPOUND, tf, ""); - throw YAPError(); + } else { + Yap_Error(TYPE_ERROR_COMPOUND, t0, ""); + } + RECOVER_MACHINE_REGS(); } Term &YAPListTerm::operator[](arity_t i) { @@ -377,8 +377,7 @@ Term YAPListTerm::car() { return (HeadOfTerm(to)); else { Yap_Error(TYPE_ERROR_LIST, to, ""); - return 0; - throw YAPError(); + return TermUnique; } } @@ -432,8 +431,8 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { // allow Prolog style exceotion handling LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - return 0; - throw YAPError(); + std::cerr << "Restart\n"; + //q.e = new YAPError(); } // don't forget, on success these bindings will still be there); result = YAP_LeaveGoal(false, &q); @@ -447,8 +446,7 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { std::cerr << "Exception received by " << YAPApplTerm(ap.functor(), ts).text() << ".\n Forwarded...\n\n"; LOCAL_RestartEnv = oj; - return 0; - throw e; + return false; } } @@ -480,8 +478,8 @@ bool YAPEngine::mgoal(Term t, Term tmod) { // allow Prolog style exception handling LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - return false; - //throw YAPError(); + std::cerr << "Restart\n"; + //throw new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); @@ -557,7 +555,7 @@ Term YAPEngine::fun(Term t) { sigjmp_buf buf, *oldp = LOCAL_RestartEnv; LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - // throw YAPError(); + // throw new YAPError(); LOCAL_RestartEnv = oldp; RECOVER_MACHINE_REGS(); return 0; @@ -676,14 +674,14 @@ bool YAPQuery::next() { bool result = false; sigjmp_buf buf, *oldp = LOCAL_RestartEnv; Term terr; + e = nullptr; try { BACKUP_MACHINE_REGS(); if (!q_open) return false; LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - // throw YAPError(); - return false; + //e = new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); @@ -701,11 +699,10 @@ bool YAPQuery::next() { __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "fail"); } q_state = 1; - if ((terr = Yap_GetException())) { - if ((terr = Yap_GetException())) { + if ((terr = Yap_PeekException())) { LOCAL_RestartEnv = &buf; - throw YAPError(); - } + + result = false; } __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "out %d", result); @@ -846,8 +843,9 @@ void Yap_displayWithJava(int c) { void YAPEngine::doInit(YAP_file_type_t BootMode, YAPEngineArgs *engineArgs) { if ((BootMode = YAP_Init(engineArgs)) == YAP_FOUND_BOOT_ERROR) { - return; - throw YAPError(); + std::cerr << "Exception received by " << __func__ << "( " + << "while booting" << ").\n Forwarded...\n\n"; + return; } /* Begin preprocessor code */ /* live */ @@ -903,7 +901,8 @@ PredEntry *YAPPredicate::getPred(YAPTerm &tt, CELL *&outp) { Yap_ThrowError(INSTANTIATION_ERROR, tt.term(), 0); else if (IsNumTerm(t)) Yap_ThrowError(TYPE_ERROR_CALLABLE, tt.term(), 0); - throw YAPError(); + std::cerr << "Exception received by " << __func__ << "( " + << YAPTerm(tt).text() << ").\n Forwarded...\n\n"; } tt.put(t); if (IsAtomTerm(t)) { @@ -1062,7 +1061,7 @@ Term YAPEngine::top_level(std::string s) { ARG2 = tp; ARG3 = MkVarTerm(); if (ARG1 == 0) - YAPError(SYNTAX_ERROR); + Yap_Error(SYNTAX_ERROR, ARG1, "in input query"); YAPPredicate p = YAPPredicate(YAP_TopGoal()); YAPQuery *Q = new YAPQuery(p, 0); Term ts[2]; diff --git a/CXX/yapie.hh b/CXX/yapie.hh index 7ac29ac1b..09ebea608 100644 --- a/CXX/yapie.hh +++ b/CXX/yapie.hh @@ -34,7 +34,11 @@ class X_API YAPError { public: YAPError(){ - //ID = LOCAL_ActiveError->errorNo; + if (LOCAL_ActiveError == nullptr) + return; + ID = LOCAL_ActiveError->errorNo; + if (ID != YAP_NO_ERROR) {}; + std::cerr << "Error detected" << ID << "\n"; } /// error handler object with initial data when receiving the error term YAPError(yap_error_number id, YAPTerm culprit, std::string txt); diff --git a/CXX/yapq.hh b/CXX/yapq.hh index cf5f31101..dfb02f882 100644 --- a/CXX/yapq.hh +++ b/CXX/yapq.hh @@ -46,6 +46,7 @@ class X_API YAPQuery : public YAPPredicate { YAPTerm goal; // temporaries Term tnames, tgoal; + YAPError *e; inline void setNext() { // oq = LOCAL_execution; // LOCAL_execution = this; @@ -292,7 +293,8 @@ private: YAPError yerror; void doInit(YAP_file_type_t BootMode, YAPEngineArgs *cargs); YAP_dogoalinfo q; - PredEntry *rewriteUndefEngineQuery(PredEntry *ap, Term &t, Term tmod); + YAPError e; + PredEntry *rewriteUndefEngineQuery(PredEntry *ap, Term &t, Term tmod); public: /// construct a new engine; may use a variable number of arguments diff --git a/H/locals.h b/H/locals.h index 3b1c9db78..70a7d9c48 100644 --- a/H/locals.h +++ b/H/locals.h @@ -1,6 +1,6 @@ -// Stuff that must be considered local to a thread or worker +/// Thread Local Variables. This file now follows C syntax. -// Streams +// Macro support #ifndef LOCAL #include "Yap.h" #include "heap.h" @@ -17,6 +17,7 @@ #define LOCAL_INIT_RESTORE(A,B,C,D) A B; C; D; #endif +/// Current bindings for std streams, includes default s LOCAL_INIT(int, c_input_stream, 0); LOCAL_INIT(int, c_output_stream, 1); LOCAL_INIT(int, c_error_stream, 2); diff --git a/cmake/java.cmake b/cmake/java.cmake index e493c894d..49deffecf 100644 --- a/cmake/java.cmake +++ b/cmake/java.cmake @@ -4,7 +4,7 @@ option(WITH_JAVA "Try to use Java (currently Java 6,7,8)" ON) if (WITH_JAVA) #detect java setup, as it is shared between different installations. -find_package(Java 8 COMPONENTS Runtime Development) +find_package(Java 1.8 COMPONENTS Runtime Development) # find_package(Java COMPONENTS Development) # find_package(Java COMPONENTS Runtime) #find_package(JavaLibs) diff --git a/docs/tut.ipynb b/docs/tut.ipynb index 259c7fa6d..738ecde94 100644 --- a/docs/tut.ipynb +++ b/docs/tut.ipynb @@ -422,19 +422,19 @@ "%matplotlib inline\n", "\n", "main :- \n", - " := import( matplotlib.pyplot ),\n", - " := import( numpy ),\n", - " Plt = matplotlib.pyplot,\n", - " Np = numpy,\n", - " t := Np.arange(0.0, 2.0, 0.01),\n", - " s := 1 + Np.sin(2*Np.pi*t),\n", - " := Plt.plot(t, s),\n", - " := Plt.xlabel(`time (s)`),\n", - " := Plt.ylabel(`voltage (mV)`),\n", - " := Plt.title(`About as simple as it gets, folks`),\n", - " := Plt.grid(true),\n", - " := Plt.savefig(`test2.png`),\n", - " := Plt.show().\n", + " import( matplotlib.pyplot ),\n", + " import( numpy ),\n", + " Plt := matplotlib.pyplot,\n", + " Np := numpy,\n", + " t := np.arange(0.0, 2.0, 0.01),\n", + " s := 1 + np.sin(2*np.pi*t),\n", + " Plt.plot(t, s),\n", + " Plt.xlabel(`time (s)`),\n", + " Plt.ylabel(`voltage (mV)`),\n", + " Plt.title(`About as simple as it gets, folks`),\n", + " Plt.grid(true),\n", + " Plt.savefig(`test2.png`),\n", + " Plt.show().\n", "\n", "main" ] diff --git a/os/iopreds.c b/os/iopreds.c index 3035c5f33..6ff25467b 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -1848,7 +1848,6 @@ static Int close2(USES_REGS1) { /* '$close'(+GLOBAL_Stream) */ Yap_Error(LOCAL_Error_TYPE, tlist, NULL); } return false; - return FALSE; } // if (args[CLOSE_FORCE].used) { // } diff --git a/os/readterm.c b/os/readterm.c index 7aa7c9ce5..476ae73b5 100644 --- a/os/readterm.c +++ b/os/readterm.c @@ -268,7 +268,8 @@ static Term scanToList(TokEntry *tok, TokEntry *errtok) { } tok = tok->TokNext; } - Yap_DebugPlWriteln(ts[0]); + if (ts[0]) + Yap_DebugPlWriteln(ts[0]); return ts[0]; } @@ -307,7 +308,7 @@ static Int scan_to_list(USES_REGS1) { } /** - * Syntax Error Handler + * Syntaax Error Handler * * @par tokptr: the sequence of tokens * @par sno: the stream numbet diff --git a/os/streams.c b/os/streams.c index 4ff0ec45b..27dfcc81a 100644 --- a/os/streams.c +++ b/os/streams.c @@ -1005,11 +1005,7 @@ static void CloseStream(int sno) { } else if (GLOBAL_Stream[sno].status & (InMemory_Stream_f)) { Yap_CloseMemoryStream(sno); } - GLOBAL_Stream[sno].status = Free_Stream_f; - GLOBAL_Stream[sno].vfs = NULL; - GLOBAL_Stream[sno].file = NULL; - Yap_DeleteAliases(sno); - if (LOCAL_c_input_stream == sno) { + if (LOCAL_c_input_stream == sno) { LOCAL_c_input_stream = StdInStream; } if (LOCAL_c_output_stream == sno) { @@ -1018,6 +1014,11 @@ static void CloseStream(int sno) { if (LOCAL_c_error_stream == sno) { LOCAL_c_error_stream = StdErrStream; } + Yap_DeleteAliases(sno); + GLOBAL_Stream[sno].vfs = NULL; + GLOBAL_Stream[sno].file = NULL; + GLOBAL_Stream[sno].status = Free_Stream_f; + /* if (st->status == Socket_Stream_f|Input_Stream_f|Output_Stream_f) { Yap_CloseSocket(); } diff --git a/packages/gecode/dev/code-generator.py b/packages/gecode/dev/code-generator.py index b01b511df..bf827454e 100755 --- a/packages/gecode/dev/code-generator.py +++ b/packages/gecode/dev/code-generator.py @@ -728,7 +728,7 @@ def gecode_version(): os.remove(file_hh) os.remove(file_txt) else: - version = "5.0.0" + version = "6.0.0" GECODE_VERSION = version return version diff --git a/packages/myddas/sqlite3/myddas_sqlite3.c b/packages/myddas/sqlite3/myddas_sqlite3.c index f48b87d49..68ec29ec3 100644 --- a/packages/myddas/sqlite3/myddas_sqlite3.c +++ b/packages/myddas/sqlite3/myddas_sqlite3.c @@ -664,8 +664,8 @@ static void Yap_InitBackMYDDAS_SQLITE3Preds(void) { } X_API void init_sqlite3(void) { - // Yap_InitMYDDAS_SQLITE3Preds(); - // Yap_InitBackMYDDAS_SQLITE3Preds(); + Yap_InitMYDDAS_SQLITE3Preds(); + Yap_InitBackMYDDAS_SQLITE3Preds(); } #if _ANDROID_ diff --git a/packages/python/pl2py.c b/packages/python/pl2py.c index 87462fb2a..130c77776 100644 --- a/packages/python/pl2py.c +++ b/packages/python/pl2py.c @@ -35,6 +35,7 @@ static PyObject *s_to_python(const char *s, bool eval, PyObject *p0) { // char *ns = Py_Malloc(strlen(s)+1); /// strcpy(ns,s); PyObject *pobj = PyUnicode_FromString(s); + Py_INCREF(pobj); return pobj; } } @@ -48,6 +49,8 @@ static PyObject *s_to_python(const char *s, bool eval, PyObject *p0) { * @return a Python object descriptor or NULL if failed */ X_API PyObject *string_to_python(const char *s, bool eval, PyObject *p0) { + + char *buf = malloc(strlen(s) + 1), *child; while ((child = strchr(s, '.')) != NULL) { size_t len = child - s; @@ -341,6 +344,7 @@ PyObject *term_to_python(term_t t, bool eval, PyObject *o, bool cvt) { AOK(PL_get_arg(1, t, t), NULL); if (!(dict = PyDict_New())) return NULL; + Py_INCREF(dict); DebugPrintf("Dict %p\n", dict); while (PL_is_functor(t, FUNCTOR_comma2)) { diff --git a/packages/python/py2pl.c b/packages/python/py2pl.c index 5828bb850..a52a5edeb 100644 --- a/packages/python/py2pl.c +++ b/packages/python/py2pl.c @@ -46,6 +46,7 @@ foreign_t assign_to_symbol(term_t t, PyObject *e) { PyObject *dic; if (!lookupPySymbol(s, NULL, &dic)) dic = py_Main; + Py_INCREF(e); return PyObject_SetAttrString(dic, s, e) == 0; } @@ -315,12 +316,13 @@ bool python_assign(term_t t, PyObject *exp, PyObject *context) { if (PySequence_Check(o) && PyInt_Check(i)) { long int j; j = PyInt_AsLong(i); - return PySequence_SetItem(o, i, exp) == 0; + return PySequence_SetItem(o, i, exp) == 0; } #endif if (PyDict_Check(o)) { - if (PyDict_SetItem(o, i, exp) == 0) + if (PyDict_SetItem(o, i, exp) == 0) { return true; + } } if (PyObject_SetAttr(o, i, exp) == 0) { return true; diff --git a/packages/python/py4yap.h b/packages/python/py4yap.h index b6418ed20..aaaa5d2fe 100644 --- a/packages/python/py4yap.h +++ b/packages/python/py4yap.h @@ -35,7 +35,7 @@ PyObject *find_obj(PyObject *ob, term_t lhs, bool eval); -#if DEBUG_MEMORY +#if DEBUG_MEMORY||1 #define DebugPrintf(s, op) fprintf(stderr, "%s:%d: " s, __FILE__, __LINE__, op) #else #define DebugPrintf(s, op) @@ -85,7 +85,7 @@ extern PyObject *py_ModDict; extern X_API bool python_in_python; -extern bool python_release_GIL(term_t state); +extern bool python_release_GIL(term_t gstate); extern term_t python_acquire_GIL(void); static inline Py_ssize_t get_p_int(PyObject *o, Py_ssize_t def) { @@ -182,7 +182,7 @@ extern void pyErrorHandler__(int line, const char *file, const char *code); extern PyObject *compound_to_pyeval(term_t t, PyObject *context, bool cvt); extern PyObject *compound_to_pytree(term_t t, PyObject *context, bool cvt); -extern PyObject *term_to_python(term_t t, bool eval, PyObject *contextxs, +extern PyObject *term_to_python(term_t t, bool eval, PyObject *context, bool eval_atom); extern PyObject *term_to_nametuple(const char *s, arity_t arity, PyObject *); diff --git a/packages/python/pybips.c b/packages/python/pybips.c index ed8f92c35..972c27d9c 100644 --- a/packages/python/pybips.c +++ b/packages/python/pybips.c @@ -1014,7 +1014,6 @@ PyObject *compound_to_pyeval(term_t t, PyObject *context, bool cvt) { } else { char *s = PL_atom_chars(name); PyObject *ys = lookupPySymbol(s, o, NULL), *pArgs; - DebugPrintf("Tuple %p\n", pArgs); int i; term_t tleft = PL_new_term_ref(); bool indict = true; @@ -1037,6 +1036,7 @@ PyObject *compound_to_pyeval(term_t t, PyObject *context, bool cvt) { pArgs = PyTuple_New(i); } } + DebugPrintf("Tuple %p\n", pyDict); if (!indict) { if (PL_is_variable(tleft)) { pArg = Py_None; diff --git a/packages/python/pyio.c b/packages/python/pyio.c index 026ca94f8..0c645922d 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -5,10 +5,45 @@ #include "YapStreams.h" -VFS_t pystream; +YAP_Term TermErrStream, TermOutStream; -static void *py_open(VFS_t *me, int sno, const char *name, - const char *io_mode) { +static int py_put(int sno, int ch) +{ + // PyObject *pyw; // buffer + // int pyw_kind; + // PyObject *pyw_data; + StreamDesc *st = YAP_GetStreamFromId(sno); + if (st->user_name == TermOutStream) { + PyGILState_STATE tg = python_acquire_GIL(); + PySys_WriteStdout("%C", ch); + python_release_GIL(tg); + return ch; + } + if (st->user_name == TermErrStream) { + PyGILState_STATE tg = python_acquire_GIL(); + PySys_WriteStderr("%C", ch); + python_release_GIL(tg); + return ch; + } + char s[2]; + PyObject *err; + s[0] = ch; + s[1] = '\0'; + PyGILState_STATE g0 = python_acquire_GIL(); + PyObject_CallMethodObjArgs(st->u.private_data, PyUnicode_FromString("write"), + PyUnicode_FromString(s), NULL); + python_release_GIL(g0); + if ((err = PyErr_Occurred())) + { + PyErr_SetString( + err, + "Error in put\n"); // %s:%s:%d!\n", __FILE__, __FUNCTION__, __LINE__); + } + return ch; +} + +VFS_t pystream; + static void *py_open(VFS_t *me, int sno, const char *name, const char *io_mode) { #if HAVE_STRCASESTR if (strcasestr(name, "/python/") == name) name += strlen("/python/"); @@ -17,68 +52,111 @@ static void *py_open(VFS_t *me, int sno, const char *name, name += strlen("/python/"); #endif StreamDesc *st = YAP_RepStreamFromId(sno); - // we assume object is already open, so there is no need to open it. - PyObject *stream = string_to_python(name, true, NULL); - if (stream == Py_None) - return NULL; - Py_INCREF(stream); - st->u.private_data = stream; - st->vfs = me; - st->name = YAP_LookupAtom(name); - st->user_name = YAP_MkAtomTerm(st->name); - return stream; + if (strcmp(name,"sys.output") == 0) { + st->user_name = TermOutStream; + } else if(strcmp(name,"sys.error") == 0) { + st->user_name = TermErrStream; + } else { + // we assume object is already open, so there is no need to open it. + PyObject *pystream = string_to_python(name, true, NULL); + if (pystream == Py_None) { + return NULL; + } else { + st->u.private_data = pystream; + st->vfs = me; + st->name = YAP_LookupAtom(name); + st->user_name = YAP_MkAtomTerm(st->name); + } + } + return st; } -static bool py_close(int sno) { return true; } +static bool py_close(int sno) { + StreamDesc *st = YAP_RepStreamFromId(sno); + Py_DECREF(st->u.private_data); + return true; +} -static int py_put(int sno, int ch) { - // PyObject *pyw; // buffer - // int pyw_kind; - // PyObject *pyw_data; - // PySys_WriteStdout("%C", ch); - // return ch; - char s[2]; - StreamDesc *st = YAP_GetStreamFromId(sno); - // PyUnicode_WRITE(pyw_kind, pyw_data, 0, ch); - PyObject *err, *fput = PyObject_GetAttrString(st->u.private_data, "write"); - s[0] = ch; - s[1] = '\0'; - PyObject_CallMethodObjArgs(st->u.private_data, PyUnicode_FromString("write"), - PyUnicode_FromString(s), NULL); - if ((err = PyErr_Occurred())) { - PyErr_SetString( - err, - "Error in put\n"); // %s:%s:%d!\n", __FILE__, __FUNCTION__, __LINE__); +static bool getLine(int inp) { + char *myrl_line = NULL; + StreamDesc *rl_instream = YAP_RepStreamFromId(inp); + PyObject*prompt = PyUnicode_FromString( "?- "), + *msg = PyUnicode_FromString(""); + /* window of vulnerability opened */ + myrl_line = PyUnicode_AsUTF8(PyObject_CallFunctionObjArgs(rl_instream->u.private_data,msg,prompt,NULL)); + rl_instream->u.irl.ptr = rl_instream->u.irl.buf = (const unsigned char*)myrl_line; + myrl_line = NULL; + return true; +} + + +static int py_getc(int sno) { + StreamDesc *s = YAP_RepStreamFromId(sno); + int ch; + bool fetch = (s->u.irl.buf == NULL); + + if (!fetch || getLine(sno)) { + const unsigned char *ttyptr = s->u.irl.ptr++, *myrl_line = s->u.irl.buf; + ch = *ttyptr; + if (ch == '\0') { + ch = '\n'; + free((void *)myrl_line); + s->u.irl.ptr = s->u.irl.buf = NULL; + } + } else { + return EOF; + } +return ch; +} + +/** + @brief Yap_ReadlinePeekChar peeks the next char from the + readline buffer, but does not actually grab it. + + The idea is to take advantage of the buffering. Special care must be taken + with EOF, though. + +*/ +static int py_peek(int sno) { + StreamDesc *s = YAP_RepStreamFromId(sno); + int ch; + + if (s->u.irl.buf) { + const unsigned char *ttyptr = s->u.irl.ptr; + ch = *ttyptr; + if (ch == '\0') { + ch = '\n'; + } + return ch; + } + if (getLine(sno)) { + ch = s->u.irl.ptr[0]; + if (ch == '\0') { + ch = '\n'; + } + } else { + return EOF; } return ch; } -static int py_get(int sno) { - StreamDesc *s = YAP_GetStreamFromId(sno); - PyObject *fget = PyObject_GetAttrString(s->u.private_data, "read"); - PyObject *pyr = PyObject_CallFunctionObjArgs(fget, PyLong_FromLong(1), NULL); - return PyUnicode_READ_CHAR(pyr, 0); -} - -static int py_peek(int sno) { - StreamDesc *s = YAP_GetStreamFromId(sno); - PyObject *fget = PyObject_GetAttrString(s->u.private_data, "peek"); - PyObject *pyr = PyObject_CallFunctionObjArgs(fget, PyLong_FromLong(1), NULL); - return PyUnicode_READ_CHAR(pyr, 0); -} static int64_t py_seek(int sno, int64_t where, int how) { - StreamDesc *s = YAP_GetStreamFromId(sno); - PyObject *fseek = PyObject_GetAttrString(s->u.private_data, "seek"); + StreamDesc *g0 = YAP_RepStreamFromId(sno); + PyGILState_STATE s0 = python_acquire_GIL(); + PyObject *fseek = PyObject_GetAttrString(g0->u.private_data, "seek"); PyObject *pyr = PyObject_CallFunctionObjArgs(fseek, PyLong_FromLong(where), PyLong_FromLong(how), NULL); - return PyLong_AsLong(pyr); + python_release_GIL(s0); +return PyLong_AsLong(pyr); } static void py_flush(int sno) { StreamDesc *s = YAP_GetStreamFromId(sno); + YAP_Term tg = python_acquire_GIL(); PyObject *flush = PyObject_GetAttrString(s->u.private_data, "flush"); PyObject_CallFunction(flush, NULL); + python_release_GIL(tg); } #if 0 @@ -110,13 +188,15 @@ bool init_python_vfs(void) { pystream.suffix = NULL; pystream.open = py_open; pystream.close = py_close; - pystream.get_char = py_get; + pystream.get_char = py_getc; pystream.peek_char = py_peek; pystream.put_char = py_put; pystream.flush = py_flush; pystream.seek = py_seek; pystream.next = GLOBAL_VFS; GLOBAL_VFS = &pystream; + TermOutStream = YAP_MkAtomTerm(YAP_LookupAtom("std.output")); + TermErrStream = YAP_MkAtomTerm(YAP_LookupAtom("std.error")); // NULL; return true; } diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index 8c609f16d..e70466bc4 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -631,9 +631,9 @@ static YAP_Int p_python_threaded(void) { pyErrorAndReturn(true, false); } -static PyGILState_STATE gstate; term_t python_acquire_GIL(void) { +static PyGILState_STATE gstate; term_t curSlot = PL_new_term_ref(); if (!_threaded) pyErrorAndReturn(curSlot, false); @@ -643,15 +643,18 @@ term_t python_acquire_GIL(void) { // if (_locked > 0) { _locked++ ; } // else gstate = PyGILState_Ensure(); + PL_put_integer(curSlot, gstate); pyErrorAndReturn(curSlot, false); } bool python_release_GIL(term_t curBlock) { + PyGILState_STATE gstate; PyErr_Clear(); - PL_reset_term_refs(curBlock); if (_threaded) { + PL_get_integer(curBlock, &gstate); PyGILState_Release(gstate); } + PL_reset_term_refs(curBlock); pyErrorAndReturn(true, false); } diff --git a/packages/python/python.pl b/packages/python/python.pl index 42a2ef10d..d0b2e6b06 100644 --- a/packages/python/python.pl +++ b/packages/python/python.pl @@ -134,7 +134,7 @@ user(P1,P2) :- !, := P1, := P2. -user:(:= ) :- catch( python:python_proc(F), _, fail ). +user:(:= F) :- catch( python:python_proc(F), _, fail ). user:( V := F ) :- python:python_assign(F, V). diff --git a/packages/python/swig/CMakeLists.txt b/packages/python/swig/CMakeLists.txt index c14661fea..18626cc54 100644 --- a/packages/python/swig/CMakeLists.txt +++ b/packages/python/swig/CMakeLists.txt @@ -11,13 +11,13 @@ set (PYTHON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/yap4py/yapi.py ${CMAKE_CURRENT_S SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES SWIG_FLAGS "-O;-py3") -SET_SOURCE_FILES_PROPERTIES(../../swiyap.i PROPERTIES SWIG_MODULE_NAME yap4py.yap) +SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES SWIG_MODULE_NAME yap4py.yap) #SET_SOURCE_FILES_PROPERTIES(../../swi/yap.i PROPERTIES OUTPUT_NAME yap) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py) set(YAP4PY_PL prolog/yapi.yap) -set(YAP4PY_PY yap4py/__init__.py yap4py/__main__.py yap4py/yapi.py) +set(YAP4PY_PY yap4py/__main__.py yap4py/yapi.py) configure_file("setup.py.in" setup.py) configure_file("MANIFEST.in" ${CMAKE_CURRENT_BINARY_DIR}/MANIFEST.in) @@ -51,7 +51,7 @@ else() endif() add_custom_target( YAP4PY ALL - COMMAND ${SWIG_EXECUTABLE} -c++ -python -O -py3 -module "yap" -addextern -I${CMAKE_SOURCE_DIR}/H -I${CMAKE_SOURCE_DIR}/H/generated -I${CMAKE_SOURCE_DIR}/include + COMMAND ${SWIG_EXECUTABLE} -c++ -python -O -py3 -module "yap" -addextern -I${CMAKE_SOURCE_DIR}/H -I${CMAKE_SOURCE_DIR}/H/generated -I${CMAKE_SOURCE_DIR}/include -I${CMAKE_SOURCE_DIR}/OPTYap -I${CMAKE_SOURCE_DIR}/os -I${CMAKE_SOURCE_DIR}/utf8proc -I.././.. -I${CMAKE_SOURCE_DIR}/CXX -I${CMAKE_SOURCE_DIR}/packages/python -outdir ${CMAKE_CURRENT_BINARY_DIR}/yap4py -I${GMP_INCLUDE_DIRS} -DX_API="" -o ${CMAKE_CURRENT_BINARY_DIR}/yap4py/yap_wrap.cxx -oh ${CMAKE_CURRENT_BINARY_DIR}/yap4py/yap_wrap.hh ${SWIG_SOURCES} COMMAND ${PYTHON_EXECUTABLE} setup.py sdist ${bdist} diff --git a/packages/python/swig/prolog/yapi.yap b/packages/python/swig/prolog/yapi.yap index e45c49a93..d20f7a60a 100644 --- a/packages/python/swig/prolog/yapi.yap +++ b/packages/python/swig/prolog/yapi.yap @@ -10,9 +10,8 @@ python_query/2, yapi_query/2 ]). -:- stop_low_level_trace. - :- yap_flag(verbose, verbose). + :- yap_flag(verbose, silent). :- use_module( library(lists) ). @@ -22,6 +21,7 @@ :- reexport( library(python) ). :- python_import(yap4py.yapi). +:- python_import(gc). %:- start_low_level_trace. @@ -38,6 +38,7 @@ %:- initialization set_preds. set_preds :- +fail, current_predicate(P, Q), functor(Q,P,A), atom_string(P,S), @@ -47,6 +48,7 @@ set_preds :- fail), fail. set_preds :- +fail, system_predicate(P/A), atom_string(P,S), catch( @@ -61,14 +63,15 @@ argi(N,I,I1) :- I1 is I+1. python_query( Caller, String ) :- - Self := Caller.it, atomic_to_term( String, Goal, VarNames ), query_to_answer( Goal, VarNames, Status, Bindings), - Self.port := Status, + Caller.port := Status, +% := print( gc.get_referrers(Caller.port)), write_query_answer( Bindings ), nl(user_error), - Self.bindings := {}, - maplist(in_dict(Self.bindings), Bindings). + Caller.answer := {}, + maplist(in_dict(Caller.answer), Bindings). + % := print( "b", gc.get_referrers(Caller.answer)). in_dict(Dict, var([V0,V|Vs])) :- !, Dict[V] := V0, diff --git a/packages/python/swig/setup.py.in b/packages/python/swig/setup.py.in index ec54b6152..1e23aa75e 100644 --- a/packages/python/swig/setup.py.in +++ b/packages/python/swig/setup.py.in @@ -1,4 +1,4 @@ - #!/usr/bin/env python +#!/usr/bin/env python # coding: utf-8 # Copyright (c) IPython Development Team. @@ -51,24 +51,25 @@ from distutils.core import setup here = abspath(dirname(__file__)) libpydir = abspath(sysconfig.get_path('platlib')) -libpyauxdir = abspath(os.path.dirname('stdlib')) +#libpyauxdir = abspath(os.path.dirname('stdlib')) #pkg_root = join(here, name) here = path.abspath(path.dirname(__file__)) sys.path.insert(0, "${CMAKE_CURRENT_SOURCE_DIR}") +python_libdir = path.abspath(path.dirname("${PYTHON_LIBRARIES}")) if platform.system() == 'Windows': local_libs = [] win_libs = ['wsock32','ws2_32'] my_extra_link_args = ['-Wl,-export-all-symbols'] elif platform.system() == 'Darwin': - my_extra_link_args = ['-L','..','-Wl,-rpath','-Wl,${CMAKE_INSTALL_FULL_LIBDIR}'] + my_extra_link_args = ['-L','..','-Wl,-rpath,'+abspath(join(sysconfig.get_path('platlib'),'yap4py')),'-Wl,-rpath,${CMAKE_INSTALL_FULL_LIBDIR}','-Wl,-rpath,../yap4py'] win_libs = [] local_libs = ['Py4YAP'] elif platform.system() == 'Linux': - my_extra_link_args = ['-L','..','-Wl,-rpath','-Wl,${CMAKE_INSTALL_FULL_LIBDIR}'] + my_extra_link_args = ['-L','..','-Wl,-rpath,'+abspath(join(sysconfig.get_path('platlib'),'yap4py')),'-Wl,-rpath,${CMAKE_INSTALL_FULL_LIBDIR}','-Wl,-rpath,../yap4py'] win_libs = [] local_libs = ['Py4YAP'] @@ -78,22 +79,21 @@ elif platform.system() == 'Linux': native_sources = ["yap4py/yap_wrap.cxx","yap4py/yapi.cpp"] #gmp_dir = path.abspath(path.dirname("${GMP_LIBRARIES}")) -#python_libdir = path.abspath(path.dirname("${PYTHON_LIBRARIES}") # Get the long description from the README file -extensions = [Extension('yap4py._yap', native_sources, +extensions = [Extension('_yap', native_sources, define_macros=[('MAJOR_VERSION', '1'), ('MINOR_VERSION', '0'), ('_YAP_NOT_INSTALLED_', '1'), ('YAP_PYTHON', '1'), ('_GNU_SOURCE', '1')], - runtime_library_dirs=[abspath(sysconfig.get_path('platlib')), - abspath(sysconfig.get_path('platlib'))], + runtime_library_dirs=[ + abspath(join(sysconfig.get_path('platlib'),'yap4py')), abspath(sysconfig.get_path('platlib')),'${CMAKE_INSTALL_FULL_LIBDIR}'], swig_opts=['-modern', '-c++', '-py3', '-DX_API', '-Iyap4py/include' ], - library_dirs=[".",'../../..'], + library_dirs=[".",'../../..','${CMAKE_INSTALL_FULL_LIBDIR}'], extra_link_args=my_extra_link_args, libraries=['Yap','gmp']+win_libs+local_libs, include_dirs=['${CMAKE_SOURCE_DIR}/H', @@ -122,7 +122,7 @@ setup_args = dict( scripts=glob(join('scripts', '*')), packages=['yap4py'], ext_modules=extensions, - py_modules=[], + sources=['yap4py/yapi.py','yap4py/yap.py','yap4py/__main__.py','yap4py/__init_.py'], # package_data=package_data, include_package_data=True, data_files = data_files, diff --git a/packages/python/swig/yap4py/__init__.py.in b/packages/python/swig/yap4py/__init__.py.in index 9222b6f41..1f7ffb8a2 100644 --- a/packages/python/swig/yap4py/__init__.py.in +++ b/packages/python/swig/yap4py/__init__.py.in @@ -16,15 +16,18 @@ if platform.system() == 'Windows': ctypes.WinDLL(dll) elif platform.system() == 'Darwin': def load( dll ): - dll = glob.glob(os.path.join(os.path.realpath(__file__),dll))[0] + dll = glob.glob(os.path.join(os.path.dirname(__file__),dll))[0] dll = os.path.abspath(dll) ctypes.CDLL(dll) - # load('libYap.dylib') - # load('libPy4YAP.dylib') - #load( '_yap*.dylib' ) + print('loaded ',dll) + + # try: + # load( '_yap*.so' ) + # except: + # load( '_yap*.dylib' ) else: def load( dll ): - dll = glob.glob(os.path.join(os.path.realpath(__file__),dll))[0] + dll = glob.glob(os.path.join(os.path.dirname(__file__),dll))[0] dll = os.path.abspath(dll) ctypes.CDLL(dll) - # \`load('_yap*.so') + load('_yap*.so') diff --git a/packages/python/swig/yap4py/yapi.py b/packages/python/swig/yap4py/yapi.py index 8ee768e91..6542105f8 100644 --- a/packages/python/swig/yap4py/yapi.py +++ b/packages/python/swig/yap4py/yapi.py @@ -47,24 +47,21 @@ class Predicate( YAPPredicate ): def __init__(self, t, module=None): super().__init__(t) -class Goal(object): +class IQuery(YAPQuery): """Goal is a predicate instantiated under a specific environment """ def __init__(self, engine, g): - self.q = engine.query(g) - self.e = engine + self = engine.query(g) self.port = "call" self.bindings = None def __iter__(self): - return PrologTableIter( self.e, self ) + return PrologTableIter( self ) class PrologTableIter: - def __init__(self, e, g): + def __init__(self, q): try: - self.e = e - self.g = g - self.q = g.q + self.q = q except: print('Error') @@ -77,9 +74,9 @@ class PrologTableIter: if not self.q: raise StopIteration() if self.q.next(): - rc = self.g.bindings - if self.g.port == "exit": - self.close() + rc = self.q.bindings + if self.q.port == "exit": + self.q.close() return rc else: if self.q: @@ -179,7 +176,7 @@ class YAPShell: bindings = [] g = python_query(self, query) if not self.q: - self.it = Goal( engine, g ) + self.it = IQuery( engine, g ) for bind in self.it: bindings += [bind] if do_ask: diff --git a/packages/python/yap_kernel/CMakeLists.txt b/packages/python/yap_kernel/CMakeLists.txt index 1eb508cf0..697e41ae5 100644 --- a/packages/python/yap_kernel/CMakeLists.txt +++ b/packages/python/yap_kernel/CMakeLists.txt @@ -64,6 +64,8 @@ yap_ipython/frontend.py yap_ipython/parallel.py yap_ipython/html.py yap_ipython/__main__.py +_version.py +yap_ipython/_version.py yap_ipython/testing/iptest.py yap_ipython/testing/skipdoctest.py yap_ipython/testing/tools.py @@ -387,7 +389,7 @@ set(FILES ${PYTHON_SOURCES} ${PL_SOURCES} ${EXTRAS} ${RESOURCES}) set(SETUP_PY ${CMAKE_CURRENT_BINARY_DIR}/setup.py) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz - COMMAND ${CMAKE_COMMAND} -E tar cf ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz ${FILES} + COMMAND ${CMAKE_COMMAND} -E tar cf ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz ${FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -421,13 +423,14 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo- add_custom_target(YAP_KERNEL ALL COMMAND ${CMAKE_COMMAND} -E tar xzf yap.tgz - COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} build sdist bdist WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png yap.tgz ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/kernel.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js ) - install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install --ignore-installed --no-deps . + install(CODE "execute_process( + COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} build sdist bdist + COMMAND ${PYTHON_EXECUTABLE} -m pip install --ignore-installed --no-deps . COMMAND ${PYTHON_EXECUTABLE} -m yap_kernel.kernelspec WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") diff --git a/packages/python/yap_kernel/setup.py b/packages/python/yap_kernel/setup.py index 5ffe87dfd..9e0b36d09 100644 --- a/packages/python/yap_kernel/setup.py +++ b/packages/python/yap_kernel/setup.py @@ -40,14 +40,15 @@ here = os.path.abspath(os.path.dirname(__file__)) packages = ['yap_kernel','yap_ipython'] # pkg_root = pjoin(here, name) -# for d, _, _ in os.walk(pjoin(here, 'yap_kernel')): -# if os.path.exists(pjoin(d, '__init__.py')): -# packages.append(d[len(here)+1:].replace(os.path.sep, '.')) -# for d, _, _ in os.walk(pjoin(here, 'yap_ipython')): -# if os.path.exists(pjoin(d, '__init__.py')): -# packages.append(d[len(here)+1:].replace(os.path.sep, '.')) +for d, _, _ in os.walk(pjoin(here, 'yap_kernel')): + if os.path.exists(pjoin(d, '__init__.py')): + packages.append(d[len(here)+1:].replace(os.path.sep, '.')) +for d, _, _ in os.walk(pjoin(here, 'yap_ipython')): + if os.path.exists(pjoin(d, '__init__.py')): + packages.append(d[len(here)+1:].replace(os.path.sep, '.')) sys.path.insert(0, here) +sys.path.insert(0, pjoin(here,'..','swig')) package_data = { 'yap_ipython': ['prolog/*.*'], 'yap_kernel': ['resources/*.*'] diff --git a/packages/python/yap_kernel/yap_ipython/core/historyapp.py b/packages/python/yap_kernel/yap_ipython/core/historyapp.py index c1a597e16..39935e83b 100644 --- a/packages/python/yap_kernel/yap_ipython/core/historyapp.py +++ b/packages/python/yap_kernel/yap_ipython/core/historyapp.py @@ -32,15 +32,15 @@ This is an handy alias to `ipython history trim --keep=0` class HistoryTrim(BaseYAPApplication): description = trim_hist_help - + backup = Bool(False, help="Keep the old history file as history.sqlite." ).tag(config=True) - + keep = Int(1000, help="Number of recent lines to keep in the database." ).tag(config=True) - + flags = Dict(dict( backup = ({'HistoryTrim' : {'backup' : True}}, backup.help @@ -50,7 +50,7 @@ class HistoryTrim(BaseYAPApplication): aliases=Dict(dict( keep = 'HistoryTrim.keep' )) - + def start(self): profile_dir = self.profile_dir.location hist_file = os.path.join(profile_dir, 'history.sqlite') @@ -63,9 +63,9 @@ class HistoryTrim(BaseYAPApplication): print("There are already at most %d entries in the history database." % self.keep) print("Not doing anything. Use --keep= argument to keep fewer entries") return - + print("Trimming history to the most recent %d entries." % self.keep) - + inputs.pop() # Remove the extra element we got to check the length. inputs.reverse() if inputs: @@ -75,7 +75,7 @@ class HistoryTrim(BaseYAPApplication): sessions = list(con.execute('SELECT session, start, end, num_cmds, remark FROM ' 'sessions WHERE session >= ?', (first_session,))) con.close() - + # Create the new history database. new_hist_file = os.path.join(profile_dir, 'history.sqlite.new') i = 0 @@ -114,18 +114,18 @@ class HistoryTrim(BaseYAPApplication): print("Backed up longer history file to", backup_hist_file) else: os.remove(hist_file) - + os.rename(new_hist_file, hist_file) class HistoryClear(HistoryTrim): description = clear_hist_help keep = Int(0, help="Number of recent lines to keep in the database.") - + force = Bool(False, help="Don't prompt user for confirmation" ).tag(config=True) - + flags = Dict(dict( force = ({'HistoryClear' : {'force' : True}}, force.help), diff --git a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py index 170260c82..1510c343c 100644 --- a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py +++ b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py @@ -219,9 +219,9 @@ class ExecutionResult(object): def raise_error(self): """Reraises error if `success` is `False`, otherwise does nothing""" - if self.error_before_exec is not None: + if self.error_before_exec: raise self.error_before_exec - if self.error_in_exec is not None: + if self.error_in_exec: raise self.error_in_exec def __repr__(self): @@ -2598,7 +2598,7 @@ class InteractiveShell(SingletonConfigurable): with prepended_to_syspath(dname): try: for cell in get_cells(): - result = self.run_cell(cell, silent=False , shell_futures=shell_futures) + result = self.run_cell(cell, silent=False, shell_futures=shell_futures) if raise_exceptions: result.raise_error() elif not result.success: @@ -2661,6 +2661,9 @@ class InteractiveShell(SingletonConfigurable): ------- result : :class:`ExecutionResult` """ + + print("go") + result = None try: result = self._yrun_cell( raw_cell, store_history, silent, shell_futures) @@ -2668,6 +2671,7 @@ class InteractiveShell(SingletonConfigurable): self.events.trigger('post_execute') if not silent: self.events.trigger('post_run_cell', result) + print("go", result) return result def _run_cell(self, raw_cell, store_history, silent, shell_futures): diff --git a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap index 5685f68ca..bcd6a9040 100644 --- a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap +++ b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap @@ -11,15 +11,15 @@ * - */ - %% :- module( jupyter, - %% [jupyter_query/3, - %% errors/2, - %% ready/2, - %% completion/2, - - %% ] - %% ). + % :- module( jupyter, + % [jupyter_query/3, + % errors/2, + % ready/2, + % completion/2, + % ] +%% ). +:- [library(hacks)]. :- reexport(library(yapi)). :- use_module(library(lists)). @@ -32,26 +32,24 @@ jupyter_query(Caller, Cell, Line ) :- jupyter_cell(Caller, Cell, Line). jupyter_cell(_Caller, Cell, _) :- - jupyter_consult(Cell), + jupyter_consult(Cell), %stack_dump, fail. jupyter_cell( _Caller, _, Line ) :- blank( Line ), !. jupyter_cell( _Caller, _, [] ) :- !. jupyter_cell( Caller, _, Line ) :- -gated_call( - enter_cell(call), - python_query( Caller, Line ), - Port, - enter_cell(Port) - ). + Self := Caller.query, + python_query( Self, Line ). jupyter_consult(Text) :- blank( Text ), !. jupyter_consult(Cell) :- open_mem_read_stream( Cell, Stream), - load_files(user:'jupyter cell',[stream(Stream)]). +% Name = 'Inp', +% stream_property(Stream, file_name(Name) ), + load_files(user:'jupyter cell',[stream(Stream)]), !. %should load_files close? blank(Text) :- @@ -62,31 +60,18 @@ blankc(' '). blankc('\n'). blankc('\t'). -enter_cell(retry) :- - enter_cell(call). -enter_cell(call) :- - into_cell. -enter_cell(fail) :- - enter_cell(exit). -enter_cell(answer) :- - enter_cell(exit). -enter_cell(exception(_)) :- - enter_cell(exit). -enter_cell(external_exception(_)). - enter_cell(!). -enter_cell(exit) :- - nb_setval(jupyter_cell, off), - close( user_output). - -into_cell :- - nb_setval(jupyter_cell, on), - open('/python/sys.input', read, _Input, [bom(false)]), - open('/python/sys.stdout', append, _Output, []), - open('/python/sys.stderr', append, _Error, []), - set_prolog_flag(user_input,_Output), +streams(false) :- +% close( user_input), + close( user_error ), + close( user_output ). +streams(true) :- +% open('/python/input', read, _Input, [alias(user_input),bom(false)]), + open('/python/sys.stdout', append, _Output, [alias(user_output)]), + open('/python/sys.stderr', append, _Error, [alias(user_error)]), +% set_prolog_flag(user_input,_Input), set_prolog_flag(user_output,_Output), - set_prolog_flag(user_error,_Error). + set_prolog_flag(user_error,_Error). completions(S, Self) :- @@ -185,7 +170,7 @@ predicate(N,P,A) :- cont(0, F, P, P0) :- atom_concat( F, P, P0 ). cont( _, F, P, PB ):- - atom_concat( [F, P, '('], PB ). + atom_concat( [F, P, '( )'], PB ). ready(_Self, Line ) :- diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index fdc8c0957..b7503c7b4 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -3,15 +3,14 @@ import sys import abc import math import itertools +import trace from typing import Iterator, List, Tuple, Iterable, Union from traitlets import Bool, Enum, observe, Int -try: - from yap4py.yapi import Engine, Goal, EngineArgs, PrologTableIter -except: - print("Could not load _yap dll.") + +from yap4py.yapi import * from yap_ipython.core.completer import Completer, Completion from yap_ipython.utils.strdispatch import StrDispatch # import yap_ipython.core @@ -32,12 +31,13 @@ bindvars = namedtuple('bindvars', 'list') library = namedtuple('library', 'list') v = namedtuple('_', 'slot') load_files = namedtuple('load_files', 'file ofile args') -python_query= namedtuple('python_query', 'query_mgr string') +python_query = namedtuple('python_query', 'query_mgr string') jupyter_query = namedtuple('jupyter_query', 'self text query') enter_cell = namedtuple('enter_cell', 'self' ) exit_cell = namedtuple('exit_cell', 'self' ) completions = namedtuple('completions', 'txt self' ) errors = namedtuple('errors', 'self text' ) +streams = namedtuple('streams', ' text' ) class YAPInputSplitter(InputSplitter): @@ -100,6 +100,7 @@ class YAPInputSplitter(InputSplitter): Python line.""" t = self.physical_line_transforms + \ [self.assemble_logical_lines] + self.logical_line_transforms + return t def engine(self, engine): self.yapeng = engine @@ -107,11 +108,11 @@ class YAPInputSplitter(InputSplitter): def validQuery(self, text, line=None): """Return whether a legal query """ + if text == self.shell.os: + return True if not line: - (_,line,_) = self.shell.prolog_cell(text) - line = line.strip().rstrip() - if not line: - return False + line = text.rstrip() + (line, _, _, _)=self.shell.clean_end(line) self.errors = [] self.yapeng.mgoal(errors(self, line),"user") return self.errors != [] @@ -496,9 +497,11 @@ class YAPCompleter(Completer): """ self.matches = [] prolog_res = self.shell.yapeng.mgoal(completions(text, self), "user") + if self.matches: + return text, self.matches magic_res = self.magic_matches(text) + return text, magic_res - return text, self.matches+magic_res @@ -509,8 +512,7 @@ class YAPRun: self.shell = shell self.yapeng = Engine() self.yapeng.goal(use_module(library("jupyter"))) - self.q = None - self.port = "call" + self.query = None self.os = None self.it = None self.shell.yapeng = self.yapeng @@ -521,41 +523,58 @@ class YAPRun: """ if not text: return [] + if text == self.os: + return self.errors self.errors=[] + (text,_,_,_) = self.clean_end(text) self.yapeng.mgoal(errors(self,text),"user") return self.errors def jupyter_query(self, s): # - # construct a self.query from a one-line string - # self.q is opaque to Python - program,query,mx = self.prolog_cell(s) - Found = False - - if query != self.os: - self.os = None - self.iterations = 0 - pg = jupyter_query( self, program, query) - self.it = Goal( self.yapeng, pg) - else: - mx += self.iterations - self.os = s - for answ in self.it: - found = True - self.bindings += [answ] - self.iterations += 1 - if mx == self.iterations: - return True, self.bindings - port = self.it.port - if port == "exit": - self.q = None - self.os = None - return True,self.bindings - if port == "fail": - self.q = none - self.os = None - if self.bindings_message: - return True,self.bindings + # construct a self.queryuery from a one-line string + # self.query is opaque to Python + try: + program,query,stop,howmany = self.prolog_cell(s) + found = False + if s != self.os: + self.os = s + self.iterations = 0 + self.bindings = [] + pg = jupyter_query( self, program, query) + self.query = self.yapeng.query( pg) + self.query.port = "call" + else: + self.query.port = "retry" + self.os = s + howmany += self.iterations + while self.query.next(): + answer = self.query.answer + found = True + self.bindings += [answer] + self.iterations += 1 + if stop and howmany == self.iterations: + self.query.close() + self.query = None + self.os = None + return True, self.bindings + if self.query.port == "exit": + self.query.close() + self.query = None + self.os = None + sys.stderr.writeln('Done, with', self.bindings) + return True,self.bindings + self.query.close() + self.query = None + self.os = None + if self.bindings: + sys.stderr.write('Done, with', self.bindings, '\n') + else: + sys.stderr.write('Fail\n') + return True,{} + except Exception as e: + has_raised = True + self.result.result = False def _yrun_cell(self, raw_cell, store_history=True, silent=False, @@ -573,7 +592,7 @@ class YAPRun: IPython's machinery, this should be set to False. silent : bool -v If True, avoid side-effects, such as implicit displayhooks and + If True, avoid side-effects, such as implicit displayhooks and and logging. silent=True forces store_history=False. shell_futures : bool If True, the code will share future statements with the interactive @@ -704,12 +723,31 @@ v If True, avoid side-effects, such as implicit displayhooks and has_raised = False try: state = None - self.shell.bindings = dict = {} - if cell.strip(): - state = self.jupyter_query( cell ) + self.bindings = dicts = [] + if cell.strip('\n \t'): + #create a Trace object, telling it what to ignore, and whether to + # do tracing or line-counting or both. + tracer = trace.Trace( + #ignoredirs=[sys.prefix, sys.exec_prefix], + trace=1, + count=0) + + def f(self, cell): + self.jupyter_query( cell ) + + # run the new command using the given tracer + # + try: + self.yapeng.mgoal(streams(True),"user") + #state = tracer.runfunc(f,self,cell) + state = self.jupyter_query( cell ) + self.yapeng.mgoal(streams(False),"user") + except Exception as e: + has_raised = True + self.yapeng.mgoal(streams("off"),"user") if state: self.shell.last_execution_succeeded = True - self.result.result = (True, dict) + self.result.result = (True, dicts) else: self.shell.last_execution_succeeded = True self.result.result = (True, {}) @@ -735,50 +773,49 @@ v If True, avoid side-effects, such as implicit displayhooks and return self.result + def clean_end(self,s): + """ + Look at the query suffix and return + - whatever is left + - how much was taken + - whether to stop + - when to stop + """ + i = -1 + try: + its = 0 + j = 1 + while s[i].isdigit(): + ch = s[i] + its += j * (ord(ch) - ord('0')) + i-=1 + j *= 10; + if s[i] == ';': + if j > 1 or its != 0: + return s[:i], 0 - i, True, its + return s[:i], 0 - i, False, 0 + # one solution, stop + return s, 0, True, 1 + except: + return s,0, False, 0 + + + def prolog_cell(self,s): """ Trasform a text into program+query. A query is the last line if the last line is non-empty and does not terminate on a dot. You can also finish with - - `*`: you request all solutions - - '^': you want to check if there is an answer - - '?'[N]: you want an answer; optionally you want N answers + - `;`: you request all solutions + - ';'[N]: you want an answer; optionally you want N answers If the line terminates on a `*/` or starts on a `%` we assume the line is a comment. """ - s = s.rstrip() - take = 0 - its = 0 - s0 = '' - for c in s: - if c == '\n' or c.isspace(): - s0 += c - break - sf = '' - for c in reversed(s): - if c == '\n' or c.isspace(): - sf += c - break - [program,x,query] = s.rpartition('\n') - if query == '': - query = program - while take < len(query): - take += 1 - ch = query[-take] - if ch.isdigit(): - its = its*10 + ord(ch) - ord('0') - elif ch == '*' and take == 1: - return program, query[:-take], -1 - elif ch == '.' and take == 1: - return s, '', 1 - elif ch == '/' and query[-2] == '*' and take == 1: - return program, query[:-take], 1 - elif ch == '^' and take == 1: - return program, query[:-take], 1 - elif ch == '?': - return program, query[:-take], its+1 - else: - return program, query, 1 - return s, '', 1 + s0 = s.rstrip(' \n\t\i') + [program,x,query] = s0.rpartition('\n') + if query[-1] == '.': + return s,'',False,0 + (query, _,loop, sols) = self.clean_end(query) + return (program, query, loop, sols) diff --git a/pl/consult.yap b/pl/consult.yap index fb67853a6..696bc9e93 100644 --- a/pl/consult.yap +++ b/pl/consult.yap @@ -428,12 +428,18 @@ load_files(Files,Opts) :- '$lf'(Fs, Mod, Call, TOpts), fail; true ). -'$lf'(user, Mod, _, TOpts) :- !, - b_setval('$user_source_file', user), - '$do_lf'(Mod, user_input, user_input, user_input, TOpts). -'$lf'(user_input, Mod, _, TOpts) :- !, - b_setval('$user_source_file', user_input), - '$do_lf'(Mod, user_input, user_input, user_input, TOpts). +'$lf'(user, Mod, Call, TOpts) :- + !, + stream_property( S, alias( user_input )), + '$set_lf_opt'('$from_stream', TOpts, true), + '$set_lf_opt'( stream , TOpts, S), + '$lf'(S, Mod, Call, TOpts). +'$lf'(user_input, Mod, Call, TOpts ) :- + !, + stream_property( S, alias( user_input )), + '$set_lf_opt'('$from_stream', TOpts, true), + '$set_lf_opt'( stream , TOpts, S), + '$lf'(S, Mod, Call, TOpts). '$lf'(File, Mod, Call, TOpts) :- '$lf_opt'(stream, TOpts, Stream), b_setval('$user_source_file', File), @@ -453,7 +459,7 @@ load_files(Files,Opts) :- '$start_lf'(If, Mod, Stream, TOpts, File, Y, Reexport, Imports), close(Stream). -% consulting from a stre +% consulting from a stream '$start_lf'(_not_loaded, Mod, Stream, TOpts, UserFile, File, _Reexport, _Imports) :- '$lf_opt'('$from_stream', TOpts, true ), !, @@ -650,7 +656,7 @@ db_files(Fs) :- '$load_files'(Fs, [consult(db), if(not_loaded)], exo_files(Fs)). -'$csult'(Fs, M) :- +'$csult'(Fs, _M) :- '$skip_list'(_, Fs ,L), L \== [], user:dot_qualified_goal(Fs), @@ -660,7 +666,7 @@ db_files(Fs) :- '$load_files'(M:MFs,[],[M:Fs]). '$csult'(Fs, M) :- '$load_files'(M:Fs,[consult(consult)],[M:Fs]). - + '$extract_minus'([], []). '$extract_minus'([-F|Fs], [F|MFs]) :- '$extract_minus'(Fs, MFs). @@ -1632,7 +1638,7 @@ End of conditional compilation. consult_depth(LV) :- '$show_consult_level'(LV). -:- '$add_multifile'(Name,Arity,Module). +:- '$add_multifile'(dot_qualified_goal,2,user). /** @} From c33a0d72db44269472a0ed215a34df9a3e5d6394 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Wed, 14 Mar 2018 00:41:05 +0000 Subject: [PATCH 02/99] booting --- C/yap-args.c | 67 +++---- CXX/yapi.cpp | 4 +- CXX/yapq.hh | 4 +- console/yap.c | 3 +- include/YapDefs.h | 2 +- include/YapInterface.h | 4 +- library/dialect/swi/fli/swi.c | 6 +- packages/python/pypreds.c | 4 +- .../yap_ipython/core/interactiveshell.py | 4 +- .../python/yap_kernel/yap_ipython/yapi.py | 16 +- .../python/yap_kernel/yap_kernel/kernelapp.py | 14 +- pl/boot.yap | 3 +- pl/init.yap | 185 ++++++++++++++++++ pl/qly.yap | 154 --------------- pl/top.yap | 92 +-------- 15 files changed, 264 insertions(+), 298 deletions(-) diff --git a/C/yap-args.c b/C/yap-args.c index f7deb5756..3176b95c2 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -125,7 +125,7 @@ static void init_globals(YAP_init_args *yap_init) { has been overwritten .... */ setBooleanGlobalPrologFlag(HALT_AFTER_CONSULT_FLAG, - yap_init->HaltAfterConsult); + yap_init->HaltAfterBoot); } if (yap_init->PrologTopLevelGoal) { Yap_PutValue(AtomTopLevelGoal, @@ -699,7 +699,7 @@ X_API YAP_file_type_t YAP_parse_yap_arguments(int argc, char *argv[], goto GetSize; } iap->QuietMode = TRUE; - iap->HaltAfterConsult = TRUE; + iap->HaltAfterBoot = true; case 'l': p++; if (!*++argv) { @@ -759,6 +759,7 @@ X_API YAP_file_type_t YAP_parse_yap_arguments(int argc, char *argv[], argv++; iap->PrologTopLevelGoal = add_end_dot(*argv); } + iap->HaltAfterBoot = true; break; case 'n': if (!strcmp("nosignals", p)) { @@ -967,10 +968,10 @@ static void init_hw(YAP_init_args *yap_init, struct ssz_t *spt) { #endif } -static YAP_file_type_t end_init(YAP_init_args *yap_init, YAP_file_type_t rc) { +static void end_init(YAP_init_args *iap) { YAP_initialized = true; + if (iap->HaltAfterBoot) Yap_exit(0); LOCAL_PrologMode &= ~BootMode; - return rc; } static void start_modules(void) { @@ -986,14 +987,14 @@ static void start_modules(void) { /* this routine is supposed to be called from an external program that wants to control Yap */ -X_API YAP_file_type_t YAP_Init(YAP_init_args *yap_init) { - YAP_file_type_t restore_result = yap_init->boot_file_type; - bool do_bootstrap = (restore_result & YAP_CONSULT_MODE); +X_API void YAP_Init(YAP_init_args *yap_init) { + bool try_restore = yap_init->boot_file_type == YAP_QLY; + bool do_bootstrap = yap_init->boot_file_type == YAP_BOOT_PL; struct ssz_t minfo; if (YAP_initialized) /* ignore repeated calls to YAP_Init */ - return YAP_FOUND_BOOT_ERROR; + return; if (!LOCAL_TextBuffer) LOCAL_TextBuffer = Yap_InitTextAllocator(); @@ -1007,7 +1008,7 @@ X_API YAP_file_type_t YAP_Init(YAP_init_args *yap_init) { // CACHE_REGS - if (Yap_embedded) + if (yap_init->QuietMode) { setVerbosity(TermSilent); } @@ -1017,41 +1018,42 @@ X_API YAP_file_type_t YAP_Init(YAP_init_args *yap_init) { restore will print out messages .... */ setBooleanGlobalPrologFlag(HALT_AFTER_CONSULT_FLAG, - yap_init->HaltAfterConsult); + yap_init->HaltAfterBoot); } /* tell the system who should cope with interrupts */ Yap_ExecutionMode = yap_init->ExecutionMode; Yap_set_locations(yap_init); - if (!do_bootstrap && Yap_INPUT_STARTUP && - yap_init->boot_file_type != YAP_BOOT_PL && - Yap_SavedInfo(Yap_INPUT_STARTUP, &minfo.Trail, &minfo.Stack, - &minfo.Heap) && - Yap_Restore(Yap_INPUT_STARTUP)) { - setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, true); - CurrentModule = LOCAL_SourceModule = USER_MODULE; - init_globals(yap_init); - YAP_RunGoalOnce(TermInitProlog); - - start_modules(); - return end_init(yap_init, YAP_QLY); - } else { + if (do_bootstrap || + !try_restore || + !Yap_SavedInfo(Yap_INPUT_STARTUP, &minfo.Trail, &minfo.Stack, + &minfo.Heap) ) { init_globals(yap_init); start_modules(); consult(Yap_BOOTSTRAP PASS_REGS); - if (yap_init->install && Yap_OUTPUT_STARTUP) { + setAtomicGlobalPrologFlag(RESOURCE_DATABASE_FLAG, + MkAtomTerm(Yap_LookupAtom(Yap_BOOTFILE))); + setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, false); + } else { + Yap_Restore(Yap_INPUT_STARTUP); + init_globals(yap_init); + + start_modules(); + setAtomicGlobalPrologFlag(RESOURCE_DATABASE_FLAG, + MkAtomTerm(Yap_LookupAtom(Yap_INPUT_STARTUP))); + setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, true); + } + YAP_RunGoalOnce(TermInitProlog); + + if (yap_init->install && Yap_OUTPUT_STARTUP) { Term t = MkAtomTerm(Yap_LookupAtom(Yap_OUTPUT_STARTUP)); Term g = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("qsave_program"), 1), 1, &t); YAP_RunGoalOnce(g); - } - setAtomicGlobalPrologFlag(RESOURCE_DATABASE_FLAG, - MkAtomTerm(Yap_LookupAtom(Yap_BOOTFILE))); - setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, false); - return end_init(yap_init, YAP_BOOT_PL); - } + } + end_init(yap_init); } #if (DefTrailSpace < MinTrailSpace) @@ -1073,15 +1075,14 @@ X_API YAP_file_type_t YAP_Init(YAP_init_args *yap_init) { #define DEFAULT_SCHEDULERLOOP 10 #define DEFAULT_DELAYEDRELEASELOAD 3 -X_API YAP_file_type_t YAP_FastInit(char *saved_state, int argc, char *argv[]) { +X_API void YAP_FastInit(char *saved_state, int argc, char *argv[]) { YAP_init_args init_args; YAP_file_type_t out; if ((out = Yap_InitDefaults(&init_args, saved_state, argc, argv)) != YAP_FOUND_BOOT_ERROR) - out = YAP_Init(&init_args); + YAP_Init(&init_args); if (out == YAP_FOUND_BOOT_ERROR) { Yap_Error(init_args.ErrorNo, TermNil, init_args.ErrorCause); } - return out; } diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index af5736499..39ca33f3c 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -243,6 +243,7 @@ Term &YAPTerm::operator[](arity_t i) { Yap_Error(TYPE_ERROR_COMPOUND, t0, ""); } RECOVER_MACHINE_REGS(); + return (tf); } Term &YAPListTerm::operator[](arity_t i) { @@ -842,11 +843,12 @@ void Yap_displayWithJava(int c) { #endif void YAPEngine::doInit(YAP_file_type_t BootMode, YAPEngineArgs *engineArgs) { - if ((BootMode = YAP_Init(engineArgs)) == YAP_FOUND_BOOT_ERROR) { + if (BootMode == YAP_FOUND_BOOT_ERROR) { std::cerr << "Exception received by " << __func__ << "( " << "while booting" << ").\n Forwarded...\n\n"; return; } + YAP_Init(engineArgs); /* Begin preprocessor code */ /* live */ // yerror = YAPError(); diff --git a/CXX/yapq.hh b/CXX/yapq.hh index dfb02f882..c76bf767f 100644 --- a/CXX/yapq.hh +++ b/CXX/yapq.hh @@ -263,9 +263,9 @@ public: inline const char *getPrologTopLevelGoal() { return PrologTopLevelGoal; }; - inline void setHaltAfterConsult(bool fl) { HaltAfterConsult = fl; }; + inline void setHaltAfterBoot(bool fl) { HaltAfterBoot = fl; }; - inline bool getHaltAfterConsult() { return HaltAfterConsult; }; + inline bool getHaltAfterBoot() { return HaltAfterBoot; }; inline void setFastBoot(bool fl) { FastBoot = fl; }; diff --git a/console/yap.c b/console/yap.c index 15ef5cb95..5c7526c01 100755 --- a/console/yap.c +++ b/console/yap.c @@ -78,7 +78,8 @@ static int init_standard_system(int argc, char *argv[], YAP_init_args *iap) { BootMode = YAP_parse_yap_arguments(argc, argv, iap); iap->Embedded = false; /* init memory */ - iap->boot_file_type = BootMode = YAP_Init(iap); + iap->boot_file_type = BootMode; + YAP_Init(iap); if (iap->ErrorNo) { /* boot failed */ YAP_Error(iap->ErrorNo, 0L, iap->ErrorCause); diff --git a/include/YapDefs.h b/include/YapDefs.h index a0bd4bd5f..525edd6fc 100755 --- a/include/YapDefs.h +++ b/include/YapDefs.h @@ -234,7 +234,7 @@ typedef struct yap_boot_params { //> if NON-NULL, a path to extend file-search-path const char *PrologAddPath; //> if previous NON-NULL and TRUE, halt after consulting that file - bool HaltAfterConsult; + bool HaltAfterBoot; //> ignore .yaprc, .prolog.ini, etc. files. bool FastBoot; //> the next field only interest YAPTAB diff --git a/include/YapInterface.h b/include/YapInterface.h index 2d2183863..c21e7ea7d 100755 --- a/include/YapInterface.h +++ b/include/YapInterface.h @@ -378,10 +378,10 @@ extern X_API int YAP_AssertTuples(YAP_PredEntryPtr pred, const YAP_Term *ts, size_t offset, size_t sz); /* int YAP_Init(YAP_init_args *) */ -extern X_API YAP_file_type_t YAP_Init(YAP_init_args *); +extern X_API void YAP_Init(YAP_init_args *); /* int YAP_FastInit(const char *) */ -extern X_API YAP_file_type_t YAP_FastInit(char saved_state[], int argc, +extern X_API void YAP_FastInit(char saved_state[], int argc, char *argv[]); #ifndef _PL_STREAM_H diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index 8a8fa2be3..6937f6154 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -2200,7 +2200,7 @@ X_API int PL_initialise(int myargc, char **myargv) { #endif init_args.LIBDIR = NULL; init_args.BOOTFILE = NULL; - init_args.HaltAfterConsult = FALSE; + init_args.HaltAfterBoot = true; init_args.FastBoot = FALSE; init_args.MaxTableSpaceSize = 0; init_args.NumberWorkers = 1; @@ -2212,9 +2212,9 @@ X_API int PL_initialise(int myargc, char **myargv) { GLOBAL_PL_Argc = myargc; GLOBAL_PL_Argv = myargv; GLOBAL_InitialisedFromPL = true; - YAP_file_type_t rc = YAP_Init(&init_args) != YAP_FOUND_BOOT_ERROR; ATOM_nil = YAP_SWIAtomFromAtom(AtomNil); - return rc; + YAP_Init(&init_args); + return true; } X_API int PL_is_initialised(int *argcp, char ***argvp) { diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index e70466bc4..c95896c2d 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -643,16 +643,18 @@ static PyGILState_STATE gstate; // if (_locked > 0) { _locked++ ; } // else gstate = PyGILState_Ensure(); + fprintf(stderr, "+%d\n", (int)gstate); PL_put_integer(curSlot, gstate); pyErrorAndReturn(curSlot, false); } bool python_release_GIL(term_t curBlock) { PyGILState_STATE gstate; - PyErr_Clear(); + if (_threaded) { PL_get_integer(curBlock, &gstate); PyGILState_Release(gstate); + fprintf(stderr, "-%d\n", (int)gstate); } PL_reset_term_refs(curBlock); pyErrorAndReturn(true, false); diff --git a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py index 1510c343c..a0231ebd5 100644 --- a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py +++ b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py @@ -522,8 +522,7 @@ class InteractiveShell(SingletonConfigurable): # The following was in post_config_initialization self.init_inspector() self.raw_input_original = input - self.input_splitter.engine(self.yapeng) - self.input_transformer_manager.engine(self.yapeng) + #self.input_transformer_manager.engine(self.yapeng) self.init_completer() # TODO: init_io() needs to happen before init_traceback handlers # because the traceback handlers hardcode the stdout/stderr streams. @@ -2671,7 +2670,6 @@ class InteractiveShell(SingletonConfigurable): self.events.trigger('post_execute') if not silent: self.events.trigger('post_run_cell', result) - print("go", result) return result def _run_cell(self, raw_cell, store_history, silent, shell_futures): diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index b7503c7b4..5f07d0c76 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -59,11 +59,12 @@ class YAPInputSplitter(InputSplitter): # List with lines of raw input accumulated so far. _buffer_raw = None - def __init__(self, line_input_checker=True, physical_line_transforms=None, + def __init__(self, engine=None, shell=None, line_input_checker=True, physical_line_transforms=None, logical_line_transforms=None): self._buffer_raw = [] self._validate = True - self.yapeng = None + self.yapeng = engine + self.shell = shell if physical_line_transforms is not None: self.physical_line_transforms = physical_line_transforms @@ -102,19 +103,16 @@ class YAPInputSplitter(InputSplitter): [self.assemble_logical_lines] + self.logical_line_transforms return t - def engine(self, engine): - self.yapeng = engine - - def validQuery(self, text, line=None): + def validQuery(self, text, engine, shell, line=None): """Return whether a legal query """ - if text == self.shell.os: + if text == shell.os: return True if not line: line = text.rstrip() (line, _, _, _)=self.shell.clean_end(line) self.errors = [] - self.yapeng.mgoal(errors(self, line),"user") + engine.mgoal(errors(self, line),"user") return self.errors != [] @@ -183,7 +181,7 @@ class YAPInputSplitter(InputSplitter): if self.transformer_accumulating: return True else: - return self,validQuery(self.source) + return self.validQuery(self.source, self.yapeng, self) def transform_cell(self, cell): """Process and translate a cell of input. diff --git a/packages/python/yap_kernel/yap_kernel/kernelapp.py b/packages/python/yap_kernel/yap_kernel/kernelapp.py index a906201cc..cc98ab025 100644 --- a/packages/python/yap_kernel/yap_kernel/kernelapp.py +++ b/packages/python/yap_kernel/yap_kernel/kernelapp.py @@ -472,7 +472,18 @@ class YAPKernelApp(BaseYAPApplication, InteractiveShellApp, return self.subapp.start() if self.poller is not None: self.poller.start() - self.kernel.start() + + import trace + #create a Trace object, telling it what to ignore, and whether to + # do tracing or line-counting or both. + tracer = trace.Trace( + #ignoredirs=[sys.prefix, sys.exec_prefix], + trace=1, + count=0) + + tracer.runfunc(self.kernel.start) + + #self.kernel.start() self.io_loop = ioloop.IOLoop.current() try: self.io_loop.start() @@ -485,6 +496,7 @@ def main(): """Run an IPKernel as an application""" app = YAPKernelApp.instance() app.initialize() + app.start() diff --git a/pl/boot.yap b/pl/boot.yap index d6286f335..94d4b7fbc 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -202,6 +202,7 @@ print_message(L,E) :- :- c_compile('directives.yap'). +:- c_compile('init.yap'). '$command'(C,VL,Pos,Con) :- current_prolog_flag(strict_iso, true), !, /* strict_iso on */ @@ -223,8 +224,6 @@ print_message(L,E) :- :- c_compile('arith.yap'). %:- stop_low_level_trace. -:- '$init_prolog'. - :- compile_expressions. diff --git a/pl/init.yap b/pl/init.yap index 82dd79167..91670911c 100644 --- a/pl/init.yap +++ b/pl/init.yap @@ -15,3 +15,188 @@ * * *************************************************************************/ + +'$init_globals' :- + % set_prolog_flag(break_level, 0), + % '$set_read_error_handler'(error), let the user do that + nb_setval('$chr_toplevel_show_store',false). + +'$init_consult' :- + set_value('$open_expands_filename',true), + nb_setval('$assert_all',off), + nb_setval('$if_level',0), + nb_setval('$endif',off), + nb_setval('$initialization_goals',off), + nb_setval('$included_file',[]), + nb_setval('$loop_streams',[]), + \+ '$undefined'('$init_preds',prolog), + '$init_preds', + fail. +'$init_consult'. + +'$init_win_graphics' :- + '$undefined'(window_title(_,_), system), !. +'$init_win_graphics' :- + load_files([library(win_menu)], [silent(true),if(not_loaded)]), + fail. +'$init_win_graphics'. + +'$init_or_threads' :- + '$c_yapor_workers'(W), !, + '$start_orp_threads'(W). +'$init_or_threads'. + +'$start_orp_threads'(1) :- !. +'$start_orp_threads'(W) :- + thread_create('$c_worker',_,[detached(true)]), + W1 is W-1, + '$start_orp_threads'(W1). + +'$version' :- + current_prolog_flag(verbose, normal), !, + current_prolog_flag(version_git,VersionGit), + current_prolog_flag(compiled_at,AT), + current_prolog_flag(version_data, yap(Mj, Mi, Patch, _) ), + sub_atom( VersionGit, 0, 8, _, VERSIONGIT ), + current_prolog_flag(version_data, yap(Mj, Mi, Patch, _) ), + current_prolog_flag(resource_database, Saved ), + format(user_error, '% YAP ~d.~d.~d-~a (compiled ~a)~n', [Mj,Mi, Patch, VERSIONGIT, AT]), + format(user_error, '% database loaded from ~a~n', [Saved]). +'$version'. + +/** + * Initialise a Prolog engine. + * + * Must be called after restoring. + */ +'$init_prolog' :- + % do catch as early as possible + '$version', + yap_flag(file_name_variables, _OldF, true), + '$init_consult', + %set_prolog_flag(file_name_variables, OldF), + '$init_globals', + set_prolog_flag(fileerrors, true), + set_value('$gc',on), + ('$exit_undefp' -> true ; true), + prompt1(' ?- '), + set_prolog_flag(debug, false), + % simple trick to find out if this is we are booting from Prolog. + % boot from a saved state + '$init_from_saved_state_and_args', %start_low_level_trace, + + '$db_clean_queues'(0), + % this must be executed from C-code. + % '$startup_saved_state', + set_input(user_input), + set_output(user_output), + '$init_or_threads', + '$run_at_thread_start'. + + +% then we can execute the programs. +'$startup_goals' :- + module(user), + fail. +'$startup_goals' :- + recorded('$startup_goal',G,_), + catch(once(user:G),Error,user:'$Error'(Error)), + fail. +'$startup_goals' :- + get_value('$init_goal',GA), + GA \= [], + set_value('$init_goal',[]), + '$run_atom_goal'(GA), + fail. +'$startup_goals' :- + recorded('$restore_flag', goal(Module:GA), R), + erase(R), + catch(once(Module:GA),Error,user:'$Error'(Error)), + fail. +'$startup_goals' :- + get_value('$myddas_goal',GA), GA \= [], + set_value('$myddas_goal',[]), + get_value('$myddas_user',User), User \= [], + set_value('$myddas_user',[]), + get_value('$myddas_db',Db), Db \= [], + set_value('$myddas_db',[]), + get_value('$myddas_host',HostT), + ( HostT \= [] -> + Host = HostT, + set_value('$myddas_host',[]) + ; + Host = localhost + ), + get_value('$myddas_pass',PassT), + ( PassT \= [] -> + Pass = PassT, + set_value('$myddas_pass',[]) + ; + Pass = '' + ), + use_module(library(myddas)), + call(db_open(mysql,myddas,Host/Db,User,Pass)), + '$myddas_import_all', + fail. +'$startup_goals'. + + % + % MYDDAS: Import all the tables from one database + % + + '$myddas_import_all':- + call(db_my_show_tables(myddas,table(Table))), + call(db_import(myddas,Table,Table)), + fail. + '$myddas_import_all'. + +% use if we come from a save_program and we have SWI's shlib +'$init_from_saved_state_and_args' :- + current_prolog_flag(hwnd, _HWND), + load_files(library(win_menu), [silent(true)]), + fail. +'$init_from_saved_state_and_args' :- + recorded('$reload_foreign_libraries',_G,R), + erase(R), + shlib:reload_foreign_libraries, + fail. +% this should be done before -l kicks in. +'$init_from_saved_state_and_args' :- + current_prolog_flag(fast_boot, false), + ( exists('~/.yaprc') -> load_files('~/.yaprc', []) ; true ), + ( exists('~/.prologrc') -> load_files('~/.prologrc', []) ; true ), + ( exists('~/prolog.ini') -> load_files('~/prolog.ini', []) ; true ), + fail. +% use if we come from a save_program and we have a goal to execute +'$init_from_saved_state_and_args' :- + get_value('$consult_on_boot',X), X \= [], + set_value('$consult_on_boot',[]), + '$do_startup_reconsult'(X), + fail. +'$init_from_saved_state_and_args' :- + recorded('$restore_flag', init_file(M:B), R), + erase(R), + '$do_startup_reconsult'(M:B), + fail. +'$init_from_saved_state_and_args' :- + recorded('$restore_flag', unknown(M:B), R), + erase(R), + yap_flag(M:unknown,B), + fail. +'$init_from_saved_state_and_args' :- + '$startup_goals', + fail. +'$init_from_saved_state_and_args' :- + recorded('$restore_goal',G,R), + erase(R), + prompt(_,'| '), + catch(once(user:G),Error,user:'$Error'(Error)), + fail. + +'$init_path_extensions' :- + get_value('$extend_file_search_path',P), !, + P \= [], + set_value('$extend_file_search_path',[]), + '$extend_file_search_path'(P). +'$init_path_extensions'. + diff --git a/pl/qly.yap b/pl/qly.yap index 81add73d3..679760178 100755 --- a/pl/qly.yap +++ b/pl/qly.yap @@ -241,161 +241,7 @@ qend_program :- X \= os_argv, X \= language, X \= encoding. - -'$init_state' :- - ( - recorded('$program_state', _P, R) - -> - erase(R), - '$do_init_state' - ; - true - ). - -'$do_init_state' :- - '$undefp_handler'('$undefp'(_,_), prolog), - fail. -'$do_init_state' :- - set_value('$user_module',user), - '$protect', fail. -'$do_init_state' :- - compile_expressions, - '$init_preds', - fail. -'$do_init_state' :- - recorded('$program_state',L,R), - erase(R), - lists:member(F-V,L), - catch(yap_flag(F,V),Error,user:'$Error'(Error)), - fail. -'$do_init_state' :- - '$reinit_thread0', - fail. -'$do_init_state' :- - '$current_module'(prolog), - module(user), - fail. -'$do_init_state' :- - '$init_from_saved_state_and_args', - fail. -'$do_init_state' :- - stream_property(user_input, tty(true)), - set_prolog_flag(readline, true). -'$do_init_state'. - -% -% first, recover what we need from the saved state... -%' -'$init_from_saved_state_and_args' :- - '$init_path_extensions', - fail. -% use if we come from a save_program and we have SWI's shlib -'$init_from_saved_state_and_args' :- - current_prolog_flag(hwnd, _HWND), - load_files(library(win_menu), [silent(true)]), - fail. -'$init_from_saved_state_and_args' :- - recorded('$reload_foreign_libraries',_G,R), - erase(R), - shlib:reload_foreign_libraries, - fail. -% this should be done before -l kicks in. -'$init_from_saved_state_and_args' :- - current_prolog_flag(fast_boot, false), - ( exists('~/.yaprc') -> load_files('~/.yaprc', []) ; true ), - ( exists('~/.prologrc') -> load_files('~/.prologrc', []) ; true ), - ( exists('~/prolog.ini') -> load_files('~/prolog.ini', []) ; true ), - fail. -% use if we come from a save_program and we have a goal to execute -'$init_from_saved_state_and_args' :- - get_value('$consult_on_boot',X), X \= [], - set_value('$consult_on_boot',[]), - '$do_startup_reconsult'(X), - fail. -'$init_from_saved_state_and_args' :- - recorded('$restore_flag', init_file(M:B), R), - erase(R), - '$do_startup_reconsult'(M:B), - fail. -'$init_from_saved_state_and_args' :- - recorded('$restore_flag', unknown(M:B), R), - erase(R), - yap_flag(M:unknown,B), - fail. -'$init_from_saved_state_and_args' :- - '$startup_goals', - fail. -'$init_from_saved_state_and_args' :- - recorded('$restore_goal',G,R), - erase(R), - prompt(_,'| '), - catch(once(user:G),Error,user:'$Error'(Error)), - fail. -'$init_from_saved_state_and_args'. - -'$init_path_extensions' :- - get_value('$extend_file_search_path',P), !, - P \= [], - set_value('$extend_file_search_path',[]), - '$extend_file_search_path'(P). -'$init_path_extensions'. - -% then we can execute the programs. -'$startup_goals' :- - module(user), - fail. -'$startup_goals' :- - recorded('$startup_goal',G,_), - catch(once(user:G),Error,user:'$Error'(Error)), - fail. -'$startup_goals' :- - get_value('$init_goal',GA), - GA \= [], - set_value('$init_goal',[]), - '$run_atom_goal'(GA), - fail. -'$startup_goals' :- - recorded('$restore_flag', goal(Module:GA), R), - erase(R), - catch(once(Module:GA),Error,user:'$Error'(Error)), - fail. -'$startup_goals' :- - get_value('$myddas_goal',GA), GA \= [], - set_value('$myddas_goal',[]), - get_value('$myddas_user',User), User \= [], - set_value('$myddas_user',[]), - get_value('$myddas_db',Db), Db \= [], - set_value('$myddas_db',[]), - get_value('$myddas_host',HostT), - ( HostT \= [] -> - Host = HostT, - set_value('$myddas_host',[]) - ; - Host = localhost - ), - get_value('$myddas_pass',PassT), - ( PassT \= [] -> - Pass = PassT, - set_value('$myddas_pass',[]) - ; - Pass = '' - ), - use_module(library(myddas)), - call(db_open(mysql,myddas,Host/Db,User,Pass)), - '$myddas_import_all', - fail. -'$startup_goals'. - - % - % MYDDAS: Import all the tables from one database - % - - '$myddas_import_all':- - call(db_my_show_tables(myddas,table(Table))), - call(db_import(myddas,Table,Table)), - fail. - '$myddas_import_all'. qsave_file(F0) :- ensure_loaded( F0 ), diff --git a/pl/top.yap b/pl/top.yap index b00dce43f..f95cd4925 100644 --- a/pl/top.yap +++ b/pl/top.yap @@ -11,84 +11,6 @@ live :- '$live'. ), '$system_catch'('$enter_top_level',Module,Error,'$Error'(Error)). -'$init_globals' :- - % set_prolog_flag(break_level, 0), - % '$set_read_error_handler'(error), let the user do that - nb_setval('$chr_toplevel_show_store',false). - -'$init_consult' :- - set_value('$open_expands_filename',true), - nb_setval('$assert_all',off), - nb_setval('$if_level',0), - nb_setval('$endif',off), - nb_setval('$initialization_goals',off), - nb_setval('$included_file',[]), - nb_setval('$loop_streams',[]), - \+ '$undefined'('$init_preds',prolog), - '$init_preds', - fail. -'$init_consult'. - -'$init_win_graphics' :- - '$undefined'(window_title(_,_), system), !. -'$init_win_graphics' :- - load_files([library(win_menu)], [silent(true),if(not_loaded)]), - fail. -'$init_win_graphics'. - -'$init_or_threads' :- - '$c_yapor_workers'(W), !, - '$start_orp_threads'(W). -'$init_or_threads'. - -'$start_orp_threads'(1) :- !. -'$start_orp_threads'(W) :- - thread_create('$c_worker',_,[detached(true)]), - W1 is W-1, - '$start_orp_threads'(W1). - -'$version' :- - current_prolog_flag(halt_after_consult, false), - current_prolog_flag(verbose, normal), !, - current_prolog_flag(version_git,VersionGit), - current_prolog_flag(compiled_at,AT), - current_prolog_flag(version_data, yap(Mj, Mi, Patch, _) ), - sub_atom( VersionGit, 0, 8, _, VERSIONGIT ), - current_prolog_flag(version_data, yap(Mj, Mi, Patch, _) ), - current_prolog_flag(resource_database, Saved ), - format(user_error, '% YAP ~d.~d.~d-~a (compiled ~a)~n', [Mj,Mi, Patch, VERSIONGIT, AT]), - format(user_error, '% database loaded from ~a~n', [Saved]). - -'$init_prolog' :- - % do catch as early as possible - '$version', - yap_flag(file_name_variables, _OldF, true), - '$init_consult', - %set_prolog_flag(file_name_variables, OldF), - '$init_globals', - set_prolog_flag(fileerrors, true), - set_value('$gc',on), - ('$exit_undefp' -> true ; true), - prompt1(' ?- '), - set_prolog_flag(debug, false), - % simple trick to find out if this is we are booting from Prolog. - % boot from a saved state - ( - current_prolog_flag(saved_program, true) - % use saved state - -> - '$init_state' - ; - true - ), - '$db_clean_queues'(0), - % this must be executed from C-code. - % '$startup_saved_state', - set_input(user_input), - set_output(user_output), - '$init_or_threads', - '$run_at_thread_start'. - % Start file for yap /* I/O predicates */ @@ -135,13 +57,13 @@ live :- '$live'. fail. '$enter_top_level' :- flush_output, -'$run_toplevel_hooks', -prompt1(' ?- '), -'$read_toplevel'(Command,Varnames,Pos), -nb_setval('$spy_gn',1), -% stop at spy-points if debugging is on. -nb_setval('$debug_run',off), -nb_setval('$debug_jump',off), + '$run_toplevel_hooks', + prompt1(' ?- '), + '$read_toplevel'(Command,Varnames,Pos), + nb_setval('$spy_gn',1), + % stop at spy-points if debugging is on. + nb_setval('$debug_run',off), + nb_setval('$debug_jump',off), '$command'(Command,Varnames,Pos,top), current_prolog_flag(break_level, BreakLevel), ( From cc6eca69034cff86af2a39508fae20ea185aad9c Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sat, 17 Mar 2018 10:38:56 +0000 Subject: [PATCH 03/99] jupyter --- C/c_interface.c | 2 +- C/dbase.c | 4 + C/yap-args.c | 7 +- CXX/CMakeLists.txt | 4 +- CXX/yapi.cpp | 24 ++- cmake/anaconda.cmake | 73 +++++++ include/SWI-Prolog.h | 1 - include/VFS.h | 5 +- library/lammpi/CMakeLists.txt | 17 +- os/fmem.c | 2 +- os/iopreds.c | 171 ++++++++------- os/iopreds.h | 5 +- os/mem.c | 4 +- os/sig.c | 1 + os/streams.c | 16 +- os/yapio.h | 2 +- os/yio.yap | 1 - packages/python/pl2pl.c | 10 +- packages/python/py2pl.c | 1 + packages/python/py4yap.h | 6 +- packages/python/pyio.c | 31 ++- packages/python/pypreds.c | 194 +++++++++--------- packages/python/swig/yap4py/yapi.py | 149 ++++++-------- .../yap_ipython/core/interactiveshell.py | 17 +- .../yap_kernel/yap_ipython/prolog/jupyter.yap | 8 +- .../python/yap_kernel/yap_ipython/yapi.py | 9 +- packages/swig/android/streamer.cpp | 2 +- pl/absf.yap | 2 +- pl/boot.yap | 9 +- regression/modules/goal_expansion_tests.yap | 3 +- 30 files changed, 435 insertions(+), 345 deletions(-) create mode 100644 cmake/anaconda.cmake diff --git a/C/c_interface.c b/C/c_interface.c index aafa2b0f6..8a01cc8e3 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -2122,7 +2122,7 @@ X_API int YAP_InitConsult(int mode, const char *fname, char *full, int *osnop) { } } bool consulted = (mode == YAP_CONSULT_MODE); - sno = Yap_OpenStream(fl, "r", MkAtomTerm(Yap_LookupAtom(fl))); + sno = Yap_OpenStream(fl, "r", MkAtomTerm(Yap_LookupAtom(fl)), LOCAL_encoding); if (sno < 0) return sno; if (!Yap_ChDir(dirname((char *)fl))) return -1; diff --git a/C/dbase.c b/C/dbase.c index b776ed244..b94ce8954 100644 --- a/C/dbase.c +++ b/C/dbase.c @@ -4913,11 +4913,15 @@ static Int cont_current_key_integer(USES_REGS1) { Term Yap_FetchTermFromDB(void *ref) { CACHE_REGS + if (ref == NULL) + return 0; return GetDBTerm(ref, FALSE PASS_REGS); } Term Yap_FetchClauseTermFromDB(void *ref) { CACHE_REGS + if (ref == NULL) + return 0; return GetDBTerm(ref, TRUE PASS_REGS); } diff --git a/C/yap-args.c b/C/yap-args.c index 3176b95c2..8e5832bcf 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -149,7 +149,10 @@ const char *Yap_BINDIR, *Yap_ROOTDIR, *Yap_SHAREDIR, *Yap_LIBDIR, *Yap_DLLDIR, *Yap_PLDIR, *Yap_BOOTSTRAP, *Yap_COMMONSDIR, *Yap_STARTUP, *Yap_INPUT_STARTUP, *Yap_OUTPUT_STARTUP, *Yap_BOOTFILE, *Yap_INCLUDEDIR; -/* do initial boot by consulting the file boot.yap */ +/** + * consult loop in C: used to boot the system, butt supports goal execution and recursive consulting. + * + * */ static void consult(const char *b_file USES_REGS) { Term t; int c_stream, osno, oactive; @@ -157,7 +160,7 @@ static void consult(const char *b_file USES_REGS) { Functor functor_command1 = Yap_MkFunctor(Yap_LookupAtom(":-"), 1); Functor functor_compile2 = Yap_MkFunctor(Yap_LookupAtom("c_compile"), 1); - /* consult boot.pl */ + /* consult in C */ int lvl = push_text_stack(); char *full = Malloc(YAP_FILENAME_MAX + 1); full[0] = '\0'; diff --git a/CXX/CMakeLists.txt b/CXX/CMakeLists.txt index d29e8b7ec..168e84cef 100644 --- a/CXX/CMakeLists.txt +++ b/CXX/CMakeLists.txt @@ -5,7 +5,7 @@ set(SO_MINOR 0) set(SO_PATCH 0) set (CXX_SOURCES - yapi.cpp + yapi.cpp ) list(APPEND LIBYAP_SOURCES ${CXX_SOURCES} PARENT_SCOPE) @@ -15,7 +15,7 @@ if ( WIN32 OR ANDROID) set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "_YAP_NOT_INSTALLED_=1;HAVE_CONFIG_H=1;_GNU_SOURCE;YAP_KERNEL=1" ) else() add_lib(YAP++ ${CXX_SOURCES} ) - target_link_libraries(YAP++ ${CMAKE_DL_LIBS} libYap) + target_link_libraries(YAP++ ${CMAKE_DL_LIBS} Py4YAP libYap) MY_install(TARGETS YAP++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index 39ca33f3c..f8a08e8ca 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -10,6 +10,10 @@ extern "C" { #include "android/log.h" #endif +#if 1 +#include "Python.h" +#endif + #include "YapInterface.h" #include "YapBlobs.h" #include "iopreds.h" @@ -238,7 +242,6 @@ Term &YAPTerm::operator[](arity_t i) { else if (i == 1) tf = TailOfTerm(t0); RECOVER_MACHINE_REGS(); - tf = RepPair(tf)[i]; } else { Yap_Error(TYPE_ERROR_COMPOUND, t0, ""); } @@ -252,6 +255,7 @@ Term &YAPListTerm::operator[](arity_t i) { Term tf = 0; while (IsPairTerm(t0)) { if (i == 0) { + tf = HeadOfTerm(t0); break; } else { @@ -436,7 +440,10 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { //q.e = new YAPError(); } // don't forget, on success these bindings will still be there); + PyThreadState *tstate; +Py_BEGIN_ALLOW_THREADS result = YAP_LeaveGoal(false, &q); + Py_END_ALLOW_THREADS Yap_CloseHandles(q.CurSlot); LOCAL_RestartEnv = oj; RECOVER_MACHINE_REGS(); @@ -453,6 +460,9 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { bool YAPEngine::mgoal(Term t, Term tmod) { sigjmp_buf buf, *oldp = LOCAL_RestartEnv; + PyThreadState *_save; + + _save = PyEval_SaveThread(); try { CACHE_REGS BACKUP_MACHINE_REGS(); @@ -479,15 +489,16 @@ bool YAPEngine::mgoal(Term t, Term tmod) { // allow Prolog style exception handling LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - std::cerr << "Restart\n"; + PyEval_RestoreThread(_save); + std::cerr << "Restart\n"; //throw new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); - result = (bool)YAP_EnterGoal(ap, nullptr, &q); { YAP_LeaveGoal(false, &q); + PyEval_RestoreThread(_save); LOCAL_RestartEnv = oldp; RECOVER_MACHINE_REGS(); return result; @@ -495,7 +506,8 @@ bool YAPEngine::mgoal(Term t, Term tmod) { } catch (YAPError e) { YAP_LeaveGoal(false, &q); Yap_CloseHandles(q.CurSlot); - LOCAL_RestartEnv = oldp; + PyEval_RestoreThread(_save); + LOCAL_RestartEnv = oldp; return 0; //throw e; } @@ -745,8 +757,8 @@ PredEntry *YAPEngine::rewriteUndefEngineQuery(PredEntry *a, Term &tgoal, ARG1 = tgoal = Yap_MkApplTerm(FunctorModule, 2, ts); //goal = YAPTerm(Yap_MkApplTerm(FunctorMetaCall, 1, &ARG1)); return PredCall; - - + + // return YAPApplTerm(FunctorUndefinedQuery, ts); } diff --git a/cmake/anaconda.cmake b/cmake/anaconda.cmake new file mode 100644 index 000000000..4c2693122 --- /dev/null +++ b/cmake/anaconda.cmake @@ -0,0 +1,73 @@ + set (PYTHONLIBS_FOUND YES CACHE BOOL "MINGW/MSYS2" FORCE ) + set (PYTHON_LIBRARY $ENV{PREFIX}/lib/libpython$ENV{PY_VER}m.$ENV{SHLIB_EXT} CACHE FILEPATH "MINGW/MSYS2" FORCE ) + set (PYTHON_LIBRARIES ${PYTHON_LIBRARY} CACHE FILEPATH "MINGW/MSYS2" FORCE ) + set (PYTHON_INCLUDE_PATH $ENV{PREFIX}/include/python$ENV{PY_VER}m CACHE PATH "MINGW/MSYS2" FORCE ) + set (PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH} CACHE PATH "MINGW/MSYS2" FORCE ) + set (PYTHON_EXECUTABLE $ENV{PREFIX}/bin/python CACHE FILEPATH "MINGW/MSYS2" FORCE ) + set (PYTHONLIBS_VERSION_STRING $ENV{PY_VER} CACHE STRING "MINGW/MSYS2" FORCE ) + + + # # try to extract R from readline to avoid collision + set(READLINE_INCLUDE_DIR $ENV{PREFIX}/include CACHE PATH "readline" FORCE) + + + # Apple readline does not support readline hooks + # So we look for another one by default + set(READLINE_readline_LIBRARY $ENV{PREFIX}/lib/libreadline.$ENV{SHLIB_EXT} CACHE PATH "readline") + + # Sometimes readline really needs ncurses + set(READLINE_ncurses_LIBRARY $ENV{PREFIX}/lib/libncurses.$ENV{SHLIB_EXT} CACHE PATH "readline") + + set(READLINE_ncursesw_LIBRARY $ENV{PREFIX}/lib/libncursesw.$ENV{SHLIB_EXT} CACHE PATH "readline") + + # Sometimes ncurses really needs terminfo + set(READLINE_tinfo_LIBRARY $ENV{PREFIX}/lib/libntinfo.$ENV{SHLIB_EXT} CACHE PATH "readline") + + set(READLINE_tinfow_LIBRARY $ENV{PREFIX}/lib/libntinfow.$ENV{SHLIB_EXT} CACHE PATH "readline") + + SET( READLINE_FOUND "YES" CACHE BOOL "Readline ACCESS.") + + + # Apple readline does not support readline hooks + # So we look for another one by default + if ( READLINE_readline_LIBRARY) + set (HAVE_LIBREADLINE YES CACHE BOOL "ibReadline ACCESS") + endif() + + IF(READLINE_readline_LIBRARY) + set(HAVE_LIBREADLINE CACHE YES BOOL "Readline works." ) + SET( READLINE_LIBRARIES + ${READLINE_readline_LIBRARY} + ) + + # some readline libraries depend on ncurses + IF(READLINE_ncurses_LIBRARY) + list(APPEND READLINE_LIBRARIES ${READLINE_ncurses_LIBRARY}) + endif () + + # some readline libraries depend on ncurses + IF(READLINE_ncursesw_LIBRARY) + list(APPEND READLINE_LIBRARIES ${READLINE_ncursesw_LIBRARY}) + endif () + + # some readline libraries depend on tinfo + IF(READLINE_tinfo_LIBRARY) + list(APPEND READLINE_LIBRARIES ${READLINE_tinfo_LIBRARY}) + endif () + + + # some readline libraries depend on tinfo + IF(READLINE_tinfow_LIBRARY) + list(APPEND READLINE_LIBRARIES ${READLINE_tinfow_LIBRARY}) + endif () + + IF(READLINE_INCLUDE_DIR) + SET( READLINE_FOUND "YES" CACHE BOOL "Readline ACCESS.") + ENDIF(READLINE_INCLUDE_DIR) + ENDIF(READLINE_readline_LIBRARY) + + + set (GMP_INCLUDE_DIRS $ENV{PREFIX}/include) + set (GMP_LIBRARIES $ENV{PREFIX}/lib/libgmp.${SHLIB_EXT}) + set (GMP_FOUND ON) + set (GMP_LIBRARIES_DIR $ENV{PREFIX}/lib) \ No newline at end of file diff --git a/include/SWI-Prolog.h b/include/SWI-Prolog.h index a66e3e727..fe8ddcb19 100755 --- a/include/SWI-Prolog.h +++ b/include/SWI-Prolog.h @@ -44,7 +44,6 @@ extern "C" { #include #else #include -#include #endif #endif #include diff --git a/include/VFS.h b/include/VFS.h index 5dd389534..8b9c8c24e 100644 --- a/include/VFS.h +++ b/include/VFS.h @@ -79,8 +79,9 @@ typedef struct vfs { const char *suffix; bool (*chDir)(struct vfs *me, const char *s); /** operations */ - void *(*open)(struct vfs *, int sno, const char *fname, - const char *io_mode); /// open an object + void *(*open)(struct vfs *, const char *fname, + const char *io_mode, + int sno); /// open an object /// in this space, usual w,r,a,b flags plus B (store in a buffer) bool (*close)(int sno); /// close the object int (*get_char)(int sno); /// get an octet from the stream diff --git a/library/lammpi/CMakeLists.txt b/library/lammpi/CMakeLists.txt index fcb67ba15..88b59f7a5 100644 --- a/library/lammpi/CMakeLists.txt +++ b/library/lammpi/CMakeLists.txt @@ -1,10 +1,11 @@ -set (MPI_SOURCES +set (MPI_YAP_SOURCES hash.c prologterms2c.c yap_mpi.c) macro_optional_find_package(MPI ON) - -if (MPI_C_FOUND) + + if (MPI_FOUND) + if (MPI_C_FOUND) # === Variables === # # This module will set the following variables per language in your @@ -67,7 +68,7 @@ if (MPI_C_FOUND) # pass to the MPI program. # - add_lib (yap_mpi ${MPI_SOURCES}) + add_executable (yap_mpi ${MPI_YAP_SOURCES} Yaplib ../../console/yap.c) target_link_libraries(yap_mpi libYap ${MPI_C_LIBRARIES}) @@ -76,11 +77,11 @@ if (MPI_C_FOUND) include_directories (${MPI_C_INCLUDE_PATH}) add_definitions (-DHAVE_MPI_H=1) + target_compile_definitions(yap_mpi ${MPI_C_COMPILE_FLAGS}) install(TARGETS yap_mpi - LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR} - RUNTIME DESTINATION ${YAP_INSTALL_DLLDIR} - ARCHIVE DESTINATION ${YAP_INSTALL_DLLDIR} + RUNTIME DESTINATION ${YAP_INSTALL_BDIR} ) -endif (MPI_C_FOUND) + endif (MPI_C_FOUND) +endif (MPI_FOUND) diff --git a/os/fmem.c b/os/fmem.c index 1d1b46f61..fa5e29cef 100644 --- a/os/fmem.c +++ b/os/fmem.c @@ -152,7 +152,7 @@ int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, // like any file stream. f = st->file = fmemopen((void *)buf, nchars, "r"); flags = Input_Stream_f | InMemory_Stream_f | Seekable_Stream_f; - Yap_initStream(sno, f, NULL, TermNil, encoding, flags, AtomRead, NULL); + Yap_initStream(sno, f, "memStream", "r", buf, encoding, flags, NULL); // like any file stream. Yap_DefaultStreamOps(st); UNLOCK(st->streamlock); diff --git a/os/iopreds.c b/os/iopreds.c index 6ff25467b..c5e69f6f1 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -406,16 +406,8 @@ static void InitStdStream(int sno, SMALLUNSGN flags, FILE *file, VFS_t *vfsp) { s->buf.on = false; s->encoding = ENC_ISO_UTF8; INIT_LOCK(s->streamlock); - if (vfsp != NULL) { - s->u.private_data = vfsp->open(vfsp, sno, vfsp->name, - (sno == StdInStream ? "read" : "write")); - if (s->u.private_data == NULL) { - (PlIOError(EXISTENCE_ERROR_SOURCE_SINK, MkIntTerm(sno), "%s", - vfsp->name)); - return; - } - } else { - unix_upd_stream_info(s); + if (vfsp == NULL) { + unix_upd_stream_info(s); } /* Getting streams to prompt is a mess because we need for cooperation between readers and writers to the stream :-( @@ -1133,11 +1125,23 @@ static void check_bom(int sno, StreamDesc *st) { } } -bool Yap_initStream(int sno, FILE *fd, const char *name, Term file_name, - encoding_t encoding, stream_flags_t flags, Atom open_mode, - void *vfs) { +bool Yap_initStream(int sno, FILE *fd, const char *name, const char *io_mode, Term file_name, encoding_t encoding, + stream_flags_t flags, void *vfs) { StreamDesc *st = &GLOBAL_Stream[sno]; - st->status = flags; + if (io_mode == NULL) + Yap_Error(PERMISSION_ERROR_NEW_ALIAS_FOR_STREAM, MkIntegerTerm(sno), "File opened with NULL Permissions"); + if (strchr(io_mode, 'a')) { + st->status = Append_Stream_f|Output_Stream_f|flags; + } else + if (strchr(io_mode, 'w')) { + st->status = Output_Stream_f | flags; + } + if (strchr(io_mode, 'r')) { + st->status = Input_Stream_f|flags; + } + if (strchr(io_mode, 'b')) { + st->status = Binary_Stream_f|flags; + } st->vfs = vfs; st->buf.on = false; @@ -1150,12 +1154,13 @@ bool Yap_initStream(int sno, FILE *fd, const char *name, Term file_name, } if (name == NULL) { - char buf[YAP_FILENAME_MAX + 1]; - memset(buf, 0, YAP_FILENAME_MAX + 1); - name = Yap_guessFileName(fd, sno, buf, YAP_FILENAME_MAX); - if (name) - st->name = Yap_LookupAtom(name); + char buf[YAP_FILENAME_MAX + 1]; + memset(buf, 0, YAP_FILENAME_MAX + 1); + name = Yap_guessFileName(fd, sno, buf, YAP_FILENAME_MAX); } + if (!name) + Yap_Error(SYSTEM_ERROR_INTERNAL,file_name,"Yap_guessFileName failed: opening a file without a name"); + st->name = Yap_LookupAtom(name); st->user_name = file_name; st->file = fd; st->linepos = 0; @@ -1221,7 +1226,7 @@ static const param_t open_defs[] = {OPEN_DEFS()}; static Int do_open(Term file_name, Term t2, - Term tlist USES_REGS) { /* '$open'(+File,+Mode,?Stream,-ReturnCode) */ + Term tlist USES_REGS) { Atom open_mode; int sno; StreamDesc *st; @@ -1232,6 +1237,7 @@ do_open(Term file_name, Term t2, encoding_t encoding; Term tenc; char io_mode[8]; + // original file name if (IsVarTerm(file_name)) { Yap_Error(INSTANTIATION_ERROR, file_name, "open/3"); @@ -1287,6 +1293,7 @@ do_open(Term file_name, Term t2, ? args[OPEN_EXPAND_FILENAME].tvalue == TermTrue : false) || trueGlobalPrologFlag(OPEN_EXPANDS_FILENAME_FLAG); + // expand file name? int lvl = push_text_stack(); const char *fname = Yap_AbsoluteFile(fname0, ok); @@ -1298,9 +1305,18 @@ do_open(Term file_name, Term t2, // Skip scripts that start with !#/.. or similar pop_text_stack(lvl); - bool script = - (args[OPEN_SCRIPT].used ? args[OPEN_SCRIPT].tvalue == TermTrue : false); - // binary type + + if (open_mode == AtomRead) { + strncpy(io_mode, "r", 8); + } else if (open_mode == AtomWrite) { + strncpy(io_mode, "w", 8); + } else if (open_mode == AtomAppend) { + strncpy(io_mode, "a", 8); + } else { + pop_text_stack(lvl); + return false; + } + // binary type if (args[OPEN_TYPE].used) { Term t = args[OPEN_TYPE].tvalue; bool bin = (t == TermBinary); @@ -1323,39 +1339,37 @@ do_open(Term file_name, Term t2, "type is ~a, must be one of binary or text", t); } } - // BOM mess - if (encoding == ENC_UTF16_BE || encoding == ENC_UTF16_LE || - encoding == ENC_UCS2_BE || encoding == ENC_UCS2_LE || - encoding == ENC_ISO_UTF32_BE || encoding == ENC_ISO_UTF32_LE) { - needs_bom = true; - } - if (args[OPEN_BOM].used) { - if (args[OPEN_BOM].tvalue == TermTrue) { - avoid_bom = false; - needs_bom = true; - } else if (args[OPEN_BOM].tvalue == TermFalse) { - avoid_bom = true; - needs_bom = false; - } - } - if (open_mode == AtomRead) { - strncpy(io_mode, "r", 8); - } else if (open_mode == AtomWrite) { - strncpy(io_mode, "w", 8); - } else if (open_mode == AtomAppend) { - strncpy(io_mode, "a", 8); - } else { - pop_text_stack(lvl); - return false; - } - if ((sno = Yap_OpenStream(fname, io_mode, file_name)) < 0) { + if ((sno = Yap_OpenStream(fname, io_mode, file_name, encoding)) < 0) + { pop_text_stack(lvl); return false; } st = &GLOBAL_Stream[sno]; - st->user_name = file_name; // user requested encoding? + // BOM mess + if (encoding == ENC_UTF16_BE || encoding == ENC_UTF16_LE || + encoding == ENC_UCS2_BE || encoding == ENC_UCS2_LE || + encoding == ENC_ISO_UTF32_BE || encoding == ENC_ISO_UTF32_LE) + { + needs_bom = true; + } + if (args[OPEN_BOM].used) + { + if (args[OPEN_BOM].tvalue == TermTrue) + { + avoid_bom = false; + needs_bom = true; + } + else if (args[OPEN_BOM].tvalue == TermFalse) + { + avoid_bom = true; + needs_bom = false; + } + } + bool script = + (args[OPEN_SCRIPT].used ? args[OPEN_SCRIPT].tvalue == TermTrue : false); + if (args[OPEN_ALIAS].used) { Atom al = AtomOfTerm(args[OPEN_ALIAS].tvalue); if (!Yap_AddAlias(al, sno)) { @@ -1363,7 +1377,6 @@ do_open(Term file_name, Term t2, return false; } } - st->name = Yap_LookupAtom(fname); if (st - GLOBAL_Stream < 3) { flags |= RepError_Prolog_f; } @@ -1557,14 +1570,13 @@ static Int p_open_null_stream(USES_REGS1) { return (Yap_unify(ARG1, t)); } -int Yap_OpenStream(const char *fname, const char *io_mode, Term user_name) { +int Yap_OpenStream(const char *fname, const char* io_mode, Term user_name, encoding_t enc) { CACHE_REGS int sno; StreamDesc *st; - Atom at; - struct vfs *vfsp; - FILE *fd; - int flags; + struct vfs *vfsp = NULL; + FILE *fd = NULL; + int flags; sno = GetFreeStreamD(); if (sno < 0) { @@ -1573,20 +1585,20 @@ int Yap_OpenStream(const char *fname, const char *io_mode, Term user_name) { return -1; } st = GLOBAL_Stream + sno; - // read, write, append - st->file = NULL; - st->status = 0; - // fname = Yap_VF(fname); + // fname = Yap_VF(fname); + flags = 0; if ((vfsp = vfs_owner(fname)) != NULL) { - if (!vfsp->open(vfsp, sno, fname, "r")) { + if (!vfsp->open(vfsp, fname, io_mode, sno)) { UNLOCK(st->streamlock); PlIOError(EXISTENCE_ERROR_SOURCE_SINK, MkAtomTerm(Yap_LookupAtom(fname)), "%s", fname); + /* extract BACK info passed through the stream descriptor */ return -1; } - vfsp = GLOBAL_Stream[sno].vfs; + // read, write, append + user_name = st->user_name; } else { - fd = st->file = fopen(fname, io_mode); + fd = fopen(fname, io_mode); if (fd == NULL) { if (!strchr(io_mode, 'b') && binary_file(fname)) { UNLOCK(st->streamlock); @@ -1603,25 +1615,7 @@ int Yap_OpenStream(const char *fname, const char *io_mode, Term user_name) { return -1; } } - flags = st->status; - if (strchr(io_mode, 'w')) { - if (strchr(io_mode, 'a')) { - at = AtomAppend; - flags |= Append_Stream_f | Output_Stream_f; - } else { - at = AtomWrite; - flags |= Output_Stream_f; - } - } - if (strchr(io_mode, 'r')) { - at = AtomRead; - flags |= Input_Stream_f; - } - if (strchr(io_mode, 'b')) { - flags |= Binary_Stream_f; - } - Yap_initStream(sno, st->file, fname, user_name, LOCAL_encoding, flags, at, - vfsp); + Yap_initStream(sno, fd, fname, io_mode, user_name, LOCAL_encoding, flags, vfsp); __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exists %s <%d>", fname, sno); return sno; @@ -1631,7 +1625,7 @@ int Yap_FileStream(FILE *fd, char *name, Term file_name, int flags, VFS_t *vfsp) { CACHE_REGS int sno; - Atom at; + const char *mode; sno = GetFreeStreamD(); if (sno < 0) @@ -1639,12 +1633,13 @@ int Yap_FileStream(FILE *fd, char *name, Term file_name, int flags, "new stream not available for opening")); if (flags & Output_Stream_f) { if (flags & Append_Stream_f) - at = AtomAppend; + mode = "a"; else - at = AtomWrite; - } else - at = AtomRead; - Yap_initStream(sno, fd, name, file_name, LOCAL_encoding, flags, at, vfsp); + mode = "w"; + } else { + mode = "r"; + } + Yap_initStream(sno, fd, name, mode, file_name, LOCAL_encoding, flags, vfsp); return sno; } diff --git a/os/iopreds.h b/os/iopreds.h index e0b118251..e4eb1d476 100644 --- a/os/iopreds.h +++ b/os/iopreds.h @@ -31,9 +31,8 @@ INLINE_ONLY EXTERN inline bool IsStreamTerm(Term t) { (IsApplTerm(t) && (FunctorOfTerm(t) == FunctorStream))); } -extern bool Yap_initStream(int sno, FILE *fd, const char *name, Term file_name, - encoding_t encoding, stream_flags_t flags, - Atom open_mode, void *vfs); +extern bool Yap_initStream(int sno, FILE *fd, const char *name, const char *io_mode, Term file_name, encoding_t encoding, + stream_flags_t flags, void *vfs); #define Yap_CheckStream(arg, kind, msg) \ Yap_CheckStream__(__FILE__, __FUNCTION__, __LINE__, arg, kind, msg) diff --git a/os/mem.c b/os/mem.c index 322b6a270..066874601 100644 --- a/os/mem.c +++ b/os/mem.c @@ -193,7 +193,7 @@ bool Yap_set_stream_to_buf(StreamDesc *st, const char *buf, st->file = f = NULL; flags = Input_Stream_f | InMemory_Stream_f; st->vfs = NULL; - Yap_initStream(st - GLOBAL_Stream, f, NULL, TermNil, LOCAL_encoding, flags, + Yap_initStream(st - GLOBAL_Stream, f, "r", TermNil, LOCAL_encoding, flags, AtomRead, NULL); // like any file stream. /* currently these streams are not seekable */ @@ -228,7 +228,7 @@ int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, st->file = f = NULL; flags = Input_Stream_f | InMemory_Stream_f; st->vfs = NULL; - Yap_initStream(sno, f, NULL, TermNil, encoding, flags, AtomRead, NULL); + Yap_initStream(sno, f, ""wa", TermNil, encoding, flags, AtomRead, NULL); // like any file stream. /* currently these streams are not seekable */ st->status = Input_Stream_f | InMemory_Stream_f; diff --git a/os/sig.c b/os/sig.c index 99ceae5f1..efd2ee8e1 100644 --- a/os/sig.c +++ b/os/sig.c @@ -860,5 +860,6 @@ void Yap_InitSignalPreds(void) { Yap_InitCPred("virtual_alarm", 4, virtual_alarm, SafePredFlag | SyncPredFlag); Yap_InitCPred("enable_interrupts", 0, enable_interrupts, SafePredFlag); Yap_InitCPred("disable_interrupts", 0, disable_interrupts, SafePredFlag); + my_signal_info(SIGSEGV, HandleSIGSEGV); CurrentModule = cm; } diff --git a/os/streams.c b/os/streams.c index 27dfcc81a..d3ff1f91d 100644 --- a/os/streams.c +++ b/os/streams.c @@ -445,19 +445,19 @@ found_eof(int sno, static bool stream_mode(int sno, - Term t2 USES_REGS) { /* '$set_output'(+Stream,-ErrorMessage) */ - stream_flags_t flags = GLOBAL_Stream[sno].status & - (Input_Stream_f | Output_Stream_f | Append_Stream_f); + Term t2 USES_REGS) { + /* '$set_output'(+Stream,-ErrorMessage) */ + stream_flags_t flags = GLOBAL_Stream[sno].status; if (!IsVarTerm(t2) && !(isatom(t2))) { - return FALSE; + return false; } if (flags & Input_Stream_f) return Yap_unify(t2, TermRead); - if (flags & Output_Stream_f) - return Yap_unify(t2, TermWrite); if (flags & Append_Stream_f) - return Yap_unify(t2, TermAppend); - return false; + return Yap_unify(t2, TermWrite); + if (flags & Output_Stream_f) + return Yap_unify(t2, TermWrite); + return false; } static bool diff --git a/os/yapio.h b/os/yapio.h index 3bc389397..656f65c4b 100644 --- a/os/yapio.h +++ b/os/yapio.h @@ -86,7 +86,7 @@ extern int Yap_PlGetWchar(void); extern int Yap_PlFGetchar(void); extern int Yap_GetCharForSIGINT(void); extern Int Yap_StreamToFileNo(Term); -extern int Yap_OpenStream(const char*, const char*, Term); +extern int Yap_OpenStream(const char *fname, const char* io_mode, Term user_name, encoding_t enc); extern int Yap_FileStream(FILE*, char *, Term, int, VFS_t *); extern char *Yap_TermToBuffer(Term t, encoding_t encoding, int flags); extern char *Yap_HandleToString(yhandle_t l, size_t sz, size_t *length, diff --git a/os/yio.yap b/os/yio.yap index bd1e1a037..b37757a95 100644 --- a/os/yio.yap +++ b/os/yio.yap @@ -350,7 +350,6 @@ with _S_. */ current_stream(File, Mode, Stream) :- - stream_property(Stream, mode(Mode)), '$stream_name'(Stream, File). diff --git a/packages/python/pl2pl.c b/packages/python/pl2pl.c index 82acbfda7..b9661f772 100644 --- a/packages/python/pl2pl.c +++ b/packages/python/pl2pl.c @@ -119,17 +119,17 @@ static foreign_t prolog_list_to_python_list(term_t plist, term_t pyt, term_t tle term_t targ = PL_new_term_ref(); if (PL_skip_list(plist, targ, &sz) <0 || ! PL_get_nil(targ)) { - pyErrorAndReturn( false, false); + pyErrorAndReturn( false); } if (!PyList_Check(pyl)) { - pyErrorAndReturn( false, false); + pyErrorAndReturn( false); } if (sz > PyList_GET_SIZE(pyl)) - pyErrorAndReturn( false, false); + pyErrorAndReturn( false); for (i=0; i < sz; i++) { if (!PL_get_list(plist, targ, plist)) { - pyErrorAndReturn( false, false); + pyErrorAndReturn( false); } PyObject *t = term_to_python(targ, true, NULL, true); PyList_SET_ITEM(pyl, i, t); @@ -139,7 +139,7 @@ static foreign_t prolog_list_to_python_list(term_t plist, term_t pyt, term_t tle } else { python_assign(tlen, PyLong_FromUnsignedLong(sz), NULL); } - pyErrorAndReturn( true, false); + pyErrorAndReturn( true); } install_t install_pl2pl(void) { diff --git a/packages/python/py2pl.c b/packages/python/py2pl.c index a52a5edeb..5af802c76 100644 --- a/packages/python/py2pl.c +++ b/packages/python/py2pl.c @@ -207,6 +207,7 @@ foreign_t python_to_term(PyObject *pVal, term_t t) { } X_API YAP_Term pythonToYAP(PyObject *pVal) { + term_t t = PL_new_term_ref(); if (pVal == NULL || !python_to_term(pVal, t)) { PL_reset_term_refs(t); diff --git a/packages/python/py4yap.h b/packages/python/py4yap.h index aaaa5d2fe..0c799427e 100644 --- a/packages/python/py4yap.h +++ b/packages/python/py4yap.h @@ -168,14 +168,12 @@ extern void pyErrorHandler__(int line, const char *file, const char *code); } \ } -#define pyErrorAndReturn(x, y) \ +#define pyErrorAndReturn(x) \ { \ if (PyErr_Occurred()) { \ pyErrorHandler__(__LINE__, __FILE__, __FUNCTION__); \ - return (x); \ - } else { \ - return (x); \ } \ + return (x); \ } // #define pyErrorAndReturn( x, y ) return x diff --git a/packages/python/pyio.c b/packages/python/pyio.c index 0c645922d..4fdc5586f 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -43,7 +43,7 @@ static int py_put(int sno, int ch) } VFS_t pystream; - static void *py_open(VFS_t *me, int sno, const char *name, const char *io_mode) { + static void *py_open(VFS_t *me, const char *name, const char *io_mode, int sno) { #if HAVE_STRCASESTR if (strcasestr(name, "/python/") == name) name += strlen("/python/"); @@ -51,29 +51,28 @@ VFS_t pystream; if (strstr(name, "/python/") == name) name += strlen("/python/"); #endif + PyObject *pystream = string_to_python(name, true, NULL); + if (pystream == NULL || pystream == Py_None) { + return NULL; + } StreamDesc *st = YAP_RepStreamFromId(sno); - if (strcmp(name,"sys.output") == 0) { + st->name = YAP_LookupAtom(name); + if (0&&strcmp(name,"sys.stdout") == 0) { st->user_name = TermOutStream; - } else if(strcmp(name,"sys.error") == 0) { + } else if(0&&strcmp(name,"sys.stderr") == 0) { st->user_name = TermErrStream; } else { - // we assume object is already open, so there is no need to open it. - PyObject *pystream = string_to_python(name, true, NULL); - if (pystream == Py_None) { - return NULL; - } else { - st->u.private_data = pystream; - st->vfs = me; - st->name = YAP_LookupAtom(name); - st->user_name = YAP_MkAtomTerm(st->name); - } + st->user_name = YAP_MkAtomTerm(st->name); } + // we assume object is already open, so there is no need to open it. + st->u.private_data = pystream; + st->vfs = me; return st; } static bool py_close(int sno) { - StreamDesc *st = YAP_RepStreamFromId(sno); - Py_DECREF(st->u.private_data); + StreamDesc *st = YAP_RepStreamFromId(sno); + Py_XDECREF(st->u.private_data); return true; } @@ -153,7 +152,7 @@ return PyLong_AsLong(pyr); static void py_flush(int sno) { StreamDesc *s = YAP_GetStreamFromId(sno); - YAP_Term tg = python_acquire_GIL(); + PyGILState_STATE tg = python_acquire_GIL(); PyObject *flush = PyObject_GetAttrString(s->u.private_data, "flush"); PyObject_CallFunction(flush, NULL); python_release_GIL(tg); diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index c95896c2d..d3c15276f 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -14,10 +14,10 @@ static foreign_t python_len(term_t tobj, term_t tf) { o = term_to_python(tobj, true, NULL, true); if (o == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } len = PyObject_Length(o); - pyErrorAndReturn(PL_unify_int64(tf, len), false); + pyErrorAndReturn(PL_unify_int64(tf), false); } static foreign_t python_dir(term_t tobj, term_t tf) { @@ -26,13 +26,13 @@ static foreign_t python_dir(term_t tobj, term_t tf) { o = term_to_python(tobj, true, NULL, true); if (o == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } dir = PyObject_Dir(o); { foreign_t rc = address_to_term(dir, tf); ; - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -43,14 +43,14 @@ static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { o = term_to_python(tobj, true, NULL, true); if (o == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if (!PySequence_Check(o)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } i = term_to_python(tindex, true, NULL, true); if (i == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } #if PY_MAJOR_VERSION < 3 f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); @@ -60,7 +60,7 @@ static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { { foreign_t rc = address_to_term(f, val); ; - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -72,13 +72,13 @@ static foreign_t python_is(term_t tobj, term_t tf) { o = term_to_python(tobj, true, NULL, true); if (!o) { python_release_GIL(lim); - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } foreign_t rc = python_to_term(o, tf); if (rc) PyErr_Clear(); python_release_GIL(lim); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } static foreign_t python_proc(term_t tobj) { @@ -89,7 +89,7 @@ static foreign_t python_proc(term_t tobj) { o = term_to_python(tobj, true, NULL, true); python_release_GIL(lim); bool rc = o != NULL; - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { @@ -104,10 +104,10 @@ static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { p = term_to_python(parent, true, NULL, true); // Exp if (!pI || !p) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } Py_DecRef(pI); Py_DecRef(p); @@ -115,7 +115,7 @@ static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { { foreign_t rc; rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -132,14 +132,14 @@ static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, pF = term_to_python(tin, true, NULL, true); PyErr_Clear(); if (pF == NULL) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } if (PL_is_atom(targs)) { pArgs = NULL; } else { if (!PL_get_name_arity(targs, &aname, &arity)) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { /* ignore (_) */ @@ -150,16 +150,16 @@ static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, DebugPrintf("Tuple %p\n", pArgs); if (!pArgs) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, targs, targ)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); @@ -188,16 +188,16 @@ static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, } } else { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } if (pArgs) Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } out = address_to_term(pValue, tf); - pyErrorAndReturn(out, false); + pyErrorAndReturn(out); } static foreign_t assign_python(term_t exp, term_t name) { @@ -206,11 +206,11 @@ static foreign_t assign_python(term_t exp, term_t name) { if (e == NULL) { python_release_GIL(stackp); - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } bool b = python_assign(name, e, NULL); python_release_GIL(stackp); - pyErrorAndReturn(b, false); + pyErrorAndReturn(b); } static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { @@ -224,27 +224,27 @@ static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { if ((env = py_Builtin) == NULL) { // no point in even trying - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } if (PL_get_name_arity(caller, &name, &arity)) { if (!(s = PL_atom_chars(name))) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if ((pI = PyObject_GetAttrString(env, s)) == NULL) { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } Py_INCREF(pI); } else { // Prolog should make sure this never happens. - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, caller, targ)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { @@ -252,13 +252,13 @@ static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { } else { pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } } /* pArg reference stolen here: */ if (PyTuple_SetItem(pArgs, i, pArg)) { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } } pOut = PyObject_CallObject(pI, pArgs); @@ -266,12 +266,12 @@ static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { Py_DECREF(pI); if (pOut == NULL) { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } { foreign_t rc = address_to_term(pOut, out); ; - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -284,37 +284,37 @@ static foreign_t python_access(term_t obj, term_t f, term_t out) { term_t targ = PL_new_term_ref(); if (o == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if (PL_is_atom(f)) { if (!PL_get_atom_chars(f, &s)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } Py_INCREF(pValue); - { pyErrorAndReturn(python_to_term(pValue, out), false); } + { pyErrorAndReturn(python_to_term(pValue), false); } } if (!PL_get_name_arity(f, &name, &arity)) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (!s) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if ((pF = PyObject_GetAttrString(o, s)) == NULL) { - DebugPrintf("Function %p\n", pArgs); + DebugPrintf("Function %p\n", o); PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, f, targ)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { @@ -322,7 +322,7 @@ static foreign_t python_access(term_t obj, term_t f, term_t out) { } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); @@ -331,9 +331,9 @@ static foreign_t python_access(term_t obj, term_t f, term_t out) { Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } - { pyErrorAndReturn(python_to_term(pValue, out), false); } + { pyErrorAndReturn(python_to_term(pValue), false); } } static foreign_t python_field(term_t parent, term_t att, term_t tobj) { @@ -343,7 +343,7 @@ static foreign_t python_field(term_t parent, term_t att, term_t tobj) { int arity; if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } else { PyObject *p; @@ -352,29 +352,29 @@ static foreign_t python_field(term_t parent, term_t att, term_t tobj) { p = term_to_python(parent, true, NULL, true); // Exp if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (arity == 1 && !strcmp(s, "()")) { if (!PL_get_arg(1, att, att)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } s = PL_atom_chars(name); } if (!s || !p) { - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { PyErr_Clear(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } } { foreign_t rc; rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -383,7 +383,7 @@ static foreign_t python_main_module(term_t mod) { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Main, mod); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -392,7 +392,7 @@ static foreign_t python_function(term_t tobj) { PyObject *obj = term_to_python(tobj, true, NULL, true); foreign_t rc = PyFunction_Check(obj); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } foreign_t python_builtin(term_t out) { @@ -400,7 +400,7 @@ foreign_t python_builtin(term_t out) { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Builtin, out); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -417,15 +417,15 @@ static foreign_t python_run_file(term_t file) { #else FILE *f = fopen(s, "r"); if (f == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } PyRun_SimpleFileEx(f, s, 1); #endif { - { pyErrorAndReturn(true, false); } + { pyErrorAndReturn(true); } } } - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } extern PyThreadState *YAP_save; @@ -442,7 +442,7 @@ static foreign_t python_run_command(term_t cmd) { PyRun_SimpleString(s); rc = true; } - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } static foreign_t python_run_script(term_t cmd, term_t fun) { @@ -483,7 +483,7 @@ static foreign_t python_run_script(term_t cmd, term_t fun) { Py_DECREF(pModule); PyErr_Print(); fprintf(stderr, "Call failed\n"); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } } else { pyErrorHandler(); @@ -495,11 +495,11 @@ static foreign_t python_run_script(term_t cmd, term_t fun) { Py_DECREF(pModule); } else { PyErr_Print(); - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } - { pyErrorAndReturn(true, false); } + { pyErrorAndReturn(true); } } - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } static foreign_t python_export(term_t t, term_t pl) { @@ -510,16 +510,16 @@ static foreign_t python_export(term_t t, term_t pl) { term_t targ = PL_new_term_ref(); if (!PL_get_arg(1, t, targ)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } if (!PL_get_pointer(targ, &ptr)) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } Py_INCREF((PyObject *)ptr); - /* pyErrorAndReturn( __main__, false) */ + /* pyErrorAndReturn( __main__) */ rc = python_to_term((PyObject *)ptr, pl); } - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } /** @@ -546,7 +546,7 @@ static int python_import(term_t mname, term_t mod) { if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || !PL_get_arg(2, mname, mname)) { python_release_GIL(t0); - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } PL_get_atom_chars(arg, &sa); strcpy(s, sa); @@ -556,7 +556,7 @@ static int python_import(term_t mname, term_t mod) { } else if (!PL_get_nchars(mname, &len, &s, CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { python_release_GIL(t0); - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } else { break; } @@ -568,7 +568,7 @@ static int python_import(term_t mname, term_t mod) { #endif python_release_GIL(t0); if (pName == NULL) { - pyErrorAndReturn(false, false); + pyErrorAndReturn(false); } PyObject *pModule = PyImport_Import(pName); @@ -580,11 +580,11 @@ static int python_import(term_t mname, term_t mod) { PyErr_Print(); PyErr_Clear(); #endif - { pyErrorAndReturn(false, false); } + { pyErrorAndReturn(false); } } { foreign_t rc = address_to_term(pModule, mod); - pyErrorAndReturn(rc, false); + pyErrorAndReturn(rc); } } @@ -593,8 +593,8 @@ static foreign_t python_to_rhs(term_t inp, term_t t) { PyErr_Clear(); pVal = term_to_python(inp, true, NULL, true); if (pVal == NULL) - pyErrorAndReturn(false, false); - pyErrorAndReturn(address_to_term(pVal, t), false); + pyErrorAndReturn(false); + pyErrorAndReturn(address_to_term(pVal), false); } // static PyThreadState *_saveP = NULL; @@ -605,7 +605,7 @@ static YAP_Int p_python_ensure(term_t ptr) { PyGILState_STATE _tState = PyGILState_Ensure(); - pyErrorAndReturn( PL_unify_int64(ptr, _tState), false); + pyErrorAndReturn( PL_unify_int64(ptr), false); } static YAP_Int @@ -615,7 +615,7 @@ static YAP_Int PyGILState_STATE _tState; PL_get_int64( ptr, &_tState); PyGILState_Release( _tState ); - pyErrorAndReturn( true, false); + pyErrorAndReturn( true); } */ @@ -628,40 +628,50 @@ static YAP_Int p_python_threaded(void) { // PyEval_ReleaseThread(tstate); // _threaded = true; // _locked = 0; - pyErrorAndReturn(true, false); + pyErrorAndReturn(true); } +static PyGILState_STATE gstates[64]; +static int gstatei = 0; term_t python_acquire_GIL(void) { static PyGILState_STATE gstate; term_t curSlot = PL_new_term_ref(); - if (!_threaded) - pyErrorAndReturn(curSlot, false); // extern int Yap_do_low_level_trace; // Yap_do_low_level_trace = 1; - // f[rintf( stderr, "++%d\n", ++_locked); + // fprintf( stderr, "++%d\n", ++_locked); // if (_locked > 0) { _locked++ ; } // else - gstate = PyGILState_Ensure(); - fprintf(stderr, "+%d\n", (int)gstate); - PL_put_integer(curSlot, gstate); - pyErrorAndReturn(curSlot, false); + if (_threaded) { + gstates[gstatei] = PyGILState_Ensure(); + } + fprintf(stderr, "+%d\n", (int)gstatei); + PL_put_integer(curSlot, gstatei++); + return curSlot; } bool python_release_GIL(term_t curBlock) { PyGILState_STATE gstate; + int gstateix; - if (_threaded) { - PL_get_integer(curBlock, &gstate); - PyGILState_Release(gstate); - fprintf(stderr, "-%d\n", (int)gstate); + PL_get_integer(curBlock, &gstateix); + PL_reset_term_refs(curBlock); + if (gstatei != gstateix) { + if (gstateix > gstatei) { + fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); + return false; + } else { + fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); + return false; + } + } + if (_threaded) { + PyGILState_Release(gstates[gstatei--]); } - PL_reset_term_refs(curBlock); - pyErrorAndReturn(true, false); + pyErrorAndReturn(true); } -//: prolog: release python - +/ install_t install_pypreds(void) { PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); PL_register_foreign("python_builtin", 1, python_builtin, 0); diff --git a/packages/python/swig/yap4py/yapi.py b/packages/python/swig/yap4py/yapi.py index 6542105f8..25d4853da 100644 --- a/packages/python/swig/yap4py/yapi.py +++ b/packages/python/swig/yap4py/yapi.py @@ -1,12 +1,21 @@ - -import os.path -import sys -import keyword -# debugging support. -# import pdb -from collections import namedtuple import readline -from .yap import * +from yap4py.yap import YAPEngine, YAPEngineArgs, YAPPredicate, YAPQuery, YAPPrologPredicate, YAPVarTerm +from os.path import join, dirname +from collections import namedtuple +import sys + +yap_lib_path = dirname(__file__) + +compile = namedtuple('compile', 'file') +bindvars = namedtuple('bindvars', 'list') +library = namedtuple('library', 'list') +v0 = namedtuple('v', 'slot') +yap_query = namedtuple('yap_query', 'query owner') +jupyter_query = namedtuple('jupyter_query', 'vars dict') +python_query = namedtuple('python_query', 'vars dict') +yapi_query = namedtuple('yapi_query', 'vars dict') +show_answer = namedtuple('show_answer', 'vars dict') +set_prolog_flag = namedtuple('set_prolog_flag', 'flag new_value') class Engine( YAPEngine ): @@ -16,10 +25,10 @@ class Engine( YAPEngine ): if not args: args = EngineArgs(**kwargs) if self_contained: - yap_lib_path = os.path.dirname(__file__) - args.setYapShareDir(os.path.join(yap_lib_path, "prolog")) + yap_lib_path = dirname(__file__) + args.setYapShareDir(join(yap_lib_path, "prolog")) args.setYapPLDIR(yap_lib_path) - args.setSavedState(os.path.join(yap_lib_path, "startup.yss")) + args.setSavedState(join(yap_lib_path, "startup.yss")) YAPEngine.__init__(self, args) self.goal(set_prolog_flag('verbose', 'silent')) self.goal(compile(library('yapi'))) @@ -31,9 +40,6 @@ class Engine( YAPEngine ): else: self.goal(g) - def f(self, g): - self.E.fun(g) - class EngineArgs( YAPEngineArgs ): """ Interface to Engine Options class""" @@ -47,112 +53,79 @@ class Predicate( YAPPredicate ): def __init__(self, t, module=None): super().__init__(t) -class IQuery(YAPQuery): +class Query: """Goal is a predicate instantiated under a specific environment """ def __init__(self, engine, g): - self = engine.query(g) - self.port = "call" - self.bindings = None + self.q = engine.query(g) + if self.q: + self.port = "call" + self.bindings = None + self.engine = engine + self.answer = {} def __iter__(self): - return PrologTableIter( self ) - -class PrologTableIter: - - def __init__(self, q): - try: - self.q = q - except: - print('Error') - - def __iter__(self): - # Iterators are iterables too. - # - # Adding this functions to make them so. return self def __next__(self): + print(self) if not self.q: raise StopIteration() if self.q.next(): - rc = self.q.bindings - if self.q.port == "exit": - self.q.close() + rc = self.answer + if self.port == "exit": + self.close() return rc else: - if self.q: + if self: self.close() raise StopIteration() - def close(self): + def close( self ): self.q.close() self.q = None -f2p = {"fails":{}} -for i in range(16): - f2p[i] ={} - - - -global engine, handler - -yap_lib_path = os.path.dirname(__file__) - -compile = namedtuple('compile', 'file') -bindvars = namedtuple('bindvars', 'list') -library = namedtuple('library', 'list') -v = namedtuple( 'v', 'slot') -yap_query = namedtuple( 'yap_query', 'query owner') -jupyter_query = namedtuple( 'jupyter_query', 'vars dict') -python_query = namedtuple( 'python_query', 'vars dict') -yapi_query = namedtuple( 'yapi_query', 'vars dict') -show_answer = namedtuple( 'show_answer', 'vars dict') -set_prolog_flag = namedtuple('set_prolog_flag', 'flag new_value') - - -def named( name, arity): +def name( name, arity): try: - if arity > 0 and name.isidentifier() and not keyword.iskeyword(name): + if arity > 0 and name.isidentifier(): # and not keyword.iskeyword(name): s = [] for i in range(arity): s += ["A" + str(i)] - f2p[arity][name] = namedtuple(name, s) + return namedtuple(name, s) except: - f2p[fails][name] = True + return None class PrologPredicate( YAPPrologPredicate ): """ Interface to Prolog Predicate""" -class v(YAPVarTerm): +class v(YAPVarTerm,v0): def __init__(self): - super().__init__() + YAPVarTerm.__init__() def binding(self): return self.term() -def numbervars( q ): - Dict = {} - if True: - engine.goal(show_answer( q.namedVars(), Dict)) - return Dict - rc = q.namedVarsVector() - q.r = q.goal().numbervars() - o = [] - for i in rc: - if len(i) == 2: - do = str(i[0]) + " = " + str( i[1] ) + "\n" - o += do - else: - do = str(i[0]) + " = " + str( i[1] ) + "\n" - o += do - return o class YAPShell: + def numbervars( self ): + Dict = {} + self.engine.goal(show_answer( self, Dict)) + return Dict + # rc = self.q.namedVarsVector() + # self.q.r = self.q.goal().numbervars() + # o = [] + # for i in rc: + # if len(i) == 2: + # do = str(i[0]) + " = " + str( i[1] ) + "\n" + # o += do + # else: + # do = str(i[0]) + " = " + str( i[1] ) + "\n" + # o += do + # return o - - def query_prolog(self, engine, query): + def query_prolog(self, query): #import pdb; pdb.set_trace() # # construct a query from a one-line string @@ -172,12 +145,12 @@ class YAPShell: # print( "Error: Variable Name matches a Python Symbol") # return do_ask = True - self.e = engine + engine = self.engine bindings = [] g = python_query(self, query) if not self.q: - self.it = IQuery( engine, g ) - for bind in self.it: + self.q = Query( engine, g ) + for bind in self.q: bindings += [bind] if do_ask: print(bindings) @@ -214,7 +187,7 @@ class YAPShell: if not s: loop = False else: - self.query_prolog(engine, s) + self.query_prolog(s) except SyntaxError as err: print("Syntax Error error: {0}".format(err)) except EOFError: @@ -233,13 +206,13 @@ class YAPShell: # engine = yap.YAPEngine(yap.YAPParams()); # def __init__(self, engine, **kwargs): - self.live(engine) + self.engine = engine + self.live(engine) def main(): engine = Engine() - handler = numbervars YAPShell(engine) if __name__ == "__main__": diff --git a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py index a0231ebd5..bcf280720 100644 --- a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py +++ b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py @@ -2664,9 +2664,22 @@ class InteractiveShell(SingletonConfigurable): print("go") result = None try: - result = self._yrun_cell( - raw_cell, store_history, silent, shell_futures) + import trace + tracer = trace.Trace( + #ignoredirs=[sys.prefix, sys.exec_prefix], + trace=1, + count=0) + + # run the new command using the given tracer + # + result =tracer.runfunc(self._yrun_cell, + raw_cell, store_history, + silent, shell_futures) + + # result = self._yrun_cell( + # raw_cell, store_history, silent, shell_futures) finally: + print("ugh", self.events) self.events.trigger('post_execute') if not silent: self.events.trigger('post_run_cell', result) diff --git a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap index bcd6a9040..bf26c388d 100644 --- a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap +++ b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap @@ -62,9 +62,11 @@ blankc('\t'). streams(false) :- -% close( user_input), - close( user_error ), - close( user_output ). + flush_output, + forall( + stream_property( S, mode(_) ), + close(S) + ). streams(true) :- % open('/python/input', read, _Input, [alias(user_input),bom(false)]), open('/python/sys.stdout', append, _Output, [alias(user_output)]), diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index 5f07d0c76..73f78d015 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -39,6 +39,7 @@ completions = namedtuple('completions', 'txt self' ) errors = namedtuple('errors', 'self text' ) streams = namedtuple('streams', ' text' ) +global engine class YAPInputSplitter(InputSplitter): """An input splitter that recognizes all of iyap's special syntax.""" @@ -106,11 +107,10 @@ class YAPInputSplitter(InputSplitter): def validQuery(self, text, engine, shell, line=None): """Return whether a legal query """ - if text == shell.os: + if shell and text == shell.os: return True if not line: line = text.rstrip() - (line, _, _, _)=self.shell.clean_end(line) self.errors = [] engine.mgoal(errors(self, line),"user") return self.errors != [] @@ -181,7 +181,7 @@ class YAPInputSplitter(InputSplitter): if self.transformer_accumulating: return True else: - return self.validQuery(self.source, self.yapeng, self) + return self.validQuery(self.source, engine, self.shell) def transform_cell(self, cell): """Process and translate a cell of input. @@ -509,6 +509,8 @@ class YAPRun: def __init__(self, shell): self.shell = shell self.yapeng = Engine() + global engine + engine = self.yapeng self.yapeng.goal(use_module(library("jupyter"))) self.query = None self.os = None @@ -542,6 +544,7 @@ class YAPRun: pg = jupyter_query( self, program, query) self.query = self.yapeng.query( pg) self.query.port = "call" + self.query.answer = {} else: self.query.port = "retry" self.os = s diff --git a/packages/swig/android/streamer.cpp b/packages/swig/android/streamer.cpp index ce99d8773..514d1d5f0 100644 --- a/packages/swig/android/streamer.cpp +++ b/packages/swig/android/streamer.cpp @@ -36,7 +36,7 @@ void Java_pt_up_yap_streamerJNI_swig_1module_1init__(void) { static std::string buff0; static void * -and_open(struct vfs *me, int sno, const char *name, const char *io_mode) { +and_open(struct vfs *me, const char *name, const char *io_mode, int sno) { // we assume object is already open, so there is no need to open it. GLOBAL_Stream[sno].vfs_handle = streamerInstance; GLOBAL_Stream[sno].vfs = me; diff --git a/pl/absf.yap b/pl/absf.yap index f8ae4311b..eab63a0fe 100755 --- a/pl/absf.yap +++ b/pl/absf.yap @@ -226,7 +226,7 @@ absolute_file_name(File0,File) :- '$find_in_path'(user_output,_,user_ouput, _, _) :- !. '$find_in_path'(user_error,_,user_error, _, _) :- !. '$find_in_path'(Name, Opts, File, _, First) :- -% ( atom(Name) -> true ; start_low_level_trace ), + % ( atom(Name) -> true ; start_low_level_trace ), get_abs_file_parameter( file_type, Opts, Type ), get_abs_file_parameter( access, Opts, Access ), get_abs_file_parameter( expand, Opts, Expand ), diff --git a/pl/boot.yap b/pl/boot.yap index 94d4b7fbc..d386872e3 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -250,9 +250,12 @@ initialize_prolog :- :- c_compile( 'preds.yap' ). :- c_compile( 'modules.yap' ). :- c_compile( 'grammar.yap' ). + +:- start_low_level_trace. + :- ['absf.yap']. -%:- start_low_level_trace. +:- stop_low_level_trace. :- use_module('error.yap'). @@ -305,6 +308,8 @@ initialize_prolog :- :- ['protect.yap']. +:- stop_low_level_trace. + version(yap,[6,3]). :- op(1150,fx,(mode)). @@ -444,7 +449,7 @@ modules defining clauses for it too. Dynamic predicate, normally not defined. Called by the Prolog system on run-time exceptions that can be repaired `just-in-time`. The values for _Exception_ are described below. See also catch/3 and throw/1. -If this hook predicate succeeds it must instantiate the _Action_ argument to the atom `fail` to make the operation fail silently, `retry` to tell Prolog to retry the operation or `error` to make the system generate an exception. The action `retry` only makes sense if this hook modified the environment such that the operation can now succeed without error. +If this hook preodicate succeeds it must instantiate the _Action_ argument to the atom `fail` to make the operation fail silently, `retry` to tell Prolog to retry the operation or `error` to make the system generate an exception. The action `retry` only makes sense if this hook modified the environment such that the operation can now succeed without error. + `undefined_predicate` _Context_ is instantiated to a predicate-indicator ( _Module:Name/Arity_). If the predicate fails Prolog will generate an existence_error exception. The hook is intended to implement alternatives to the SWI built-in autoloader, such as autoloading code from a database. Do not use this hook to suppress existence errors on predicates. See also `unknown`. diff --git a/regression/modules/goal_expansion_tests.yap b/regression/modules/goal_expansion_tests.yap index 02ac2e6f1..86a00c8b9 100644 --- a/regression/modules/goal_expansion_tests.yap +++ b/regression/modules/goal_expansion_tests.yap @@ -1,4 +1,4 @@ - + :- use_module(library(lists)). @@ -13,4 +13,3 @@ given user:goal_expansion(a(X,Y), m, Y is X*X )) test m:a(3,X) returns X =@= 9 given user:goal_expansion(a(X,Y), m, Y is X*X ), user:goal_expansion(a(X), X is 3*5) - From af610dc16d8290af84689998f86f451da2f5aa11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Sun, 18 Mar 2018 00:44:08 +0000 Subject: [PATCH 04/99] locking --- CXX/yapi.cpp | 11 +- os/fmem.c | 2 +- os/mem.c | 2 +- packages/python/py2pl.c | 2 +- packages/python/pyio.c | 17 +- packages/python/pypreds.c | 701 +--------------- packages/python/swig/MANIFEST.in | 1 + packages/python/swig/yap4py/__init__.py.in | 2 +- packages/python/swig/yap4py/yapi.py | 8 +- packages/python/yap_kernel/CMakeLists.txt | 759 +++++++++--------- .../yap_ipython/core/interactiveshell.py | 25 +- .../python/yap_kernel/yap_ipython/yapi.py | 3 +- 12 files changed, 437 insertions(+), 1096 deletions(-) diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index f8a08e8ca..c3bc213f0 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -440,10 +440,7 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { //q.e = new YAPError(); } // don't forget, on success these bindings will still be there); - PyThreadState *tstate; -Py_BEGIN_ALLOW_THREADS result = YAP_LeaveGoal(false, &q); - Py_END_ALLOW_THREADS Yap_CloseHandles(q.CurSlot); LOCAL_RestartEnv = oj; RECOVER_MACHINE_REGS(); @@ -462,7 +459,7 @@ bool YAPEngine::mgoal(Term t, Term tmod) { sigjmp_buf buf, *oldp = LOCAL_RestartEnv; PyThreadState *_save; - _save = PyEval_SaveThread(); + // _save = PyEval_SaveThread(); try { CACHE_REGS BACKUP_MACHINE_REGS(); @@ -489,7 +486,7 @@ bool YAPEngine::mgoal(Term t, Term tmod) { // allow Prolog style exception handling LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - PyEval_RestoreThread(_save); + // PyEval_RestoreThread(_save); std::cerr << "Restart\n"; //throw new YAPError(); } @@ -498,7 +495,7 @@ bool YAPEngine::mgoal(Term t, Term tmod) { result = (bool)YAP_EnterGoal(ap, nullptr, &q); { YAP_LeaveGoal(false, &q); - PyEval_RestoreThread(_save); + // PyEval_RestoreThread(_save); LOCAL_RestartEnv = oldp; RECOVER_MACHINE_REGS(); return result; @@ -506,7 +503,7 @@ bool YAPEngine::mgoal(Term t, Term tmod) { } catch (YAPError e) { YAP_LeaveGoal(false, &q); Yap_CloseHandles(q.CurSlot); - PyEval_RestoreThread(_save); + // PyEval_RestoreThread(_save); LOCAL_RestartEnv = oldp; return 0; //throw e; diff --git a/os/fmem.c b/os/fmem.c index fa5e29cef..c0392a708 100644 --- a/os/fmem.c +++ b/os/fmem.c @@ -152,7 +152,7 @@ int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, // like any file stream. f = st->file = fmemopen((void *)buf, nchars, "r"); flags = Input_Stream_f | InMemory_Stream_f | Seekable_Stream_f; - Yap_initStream(sno, f, "memStream", "r", buf, encoding, flags, NULL); + Yap_initStream(sno, f, "memStream", "r", TermNone, encoding, flags, NULL); // like any file stream. Yap_DefaultStreamOps(st); UNLOCK(st->streamlock); diff --git a/os/mem.c b/os/mem.c index 066874601..916729cae 100644 --- a/os/mem.c +++ b/os/mem.c @@ -228,7 +228,7 @@ int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, st->file = f = NULL; flags = Input_Stream_f | InMemory_Stream_f; st->vfs = NULL; - Yap_initStream(sno, f, ""wa", TermNil, encoding, flags, AtomRead, NULL); + Yap_initStream(sno, f, "wa", TermNil, encoding, flags, AtomRead, NULL); // like any file stream. /* currently these streams are not seekable */ st->status = Input_Stream_f | InMemory_Stream_f; diff --git a/packages/python/py2pl.c b/packages/python/py2pl.c index 5af802c76..889c40c08 100644 --- a/packages/python/py2pl.c +++ b/packages/python/py2pl.c @@ -215,7 +215,7 @@ X_API YAP_Term pythonToYAP(PyObject *pVal) { } YAP_Term tt = YAP_GetFromSlot(t); PL_reset_term_refs(t); - Py_DECREF(pVal); + //Py_DECREF(pVal); return tt; } diff --git a/packages/python/pyio.c b/packages/python/pyio.c index 4fdc5586f..ff2881228 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -51,15 +51,17 @@ VFS_t pystream; if (strstr(name, "/python/") == name) name += strlen("/python/"); #endif + term_t ctk = python_acquire_GIL(); PyObject *pystream = string_to_python(name, true, NULL); if (pystream == NULL || pystream == Py_None) { + python_release_GIL(ctk); return NULL; } StreamDesc *st = YAP_RepStreamFromId(sno); st->name = YAP_LookupAtom(name); - if (0&&strcmp(name,"sys.stdout") == 0) { + if (strcmp(name,"sys.stdout") == 0) { st->user_name = TermOutStream; - } else if(0&&strcmp(name,"sys.stderr") == 0) { + } else if(strcmp(name,"sys.stderr") == 0) { st->user_name = TermErrStream; } else { st->user_name = YAP_MkAtomTerm(st->name); @@ -67,12 +69,19 @@ VFS_t pystream; // we assume object is already open, so there is no need to open it. st->u.private_data = pystream; st->vfs = me; + python_release_GIL(ctk); return st; } static bool py_close(int sno) { StreamDesc *st = YAP_RepStreamFromId(sno); + if (strcmp(st->name,"sys.stdout") && + strcmp(st->name,"sys.stderr")) { Py_XDECREF(st->u.private_data); + } + st->u.private_data = NULL; + st->vfs = NULL; + return true; } @@ -142,7 +151,7 @@ static int py_peek(int sno) { static int64_t py_seek(int sno, int64_t where, int how) { StreamDesc *g0 = YAP_RepStreamFromId(sno); - PyGILState_STATE s0 = python_acquire_GIL(); + term_t s0 = python_acquire_GIL(); PyObject *fseek = PyObject_GetAttrString(g0->u.private_data, "seek"); PyObject *pyr = PyObject_CallFunctionObjArgs(fseek, PyLong_FromLong(where), PyLong_FromLong(how), NULL); @@ -152,7 +161,7 @@ return PyLong_AsLong(pyr); static void py_flush(int sno) { StreamDesc *s = YAP_GetStreamFromId(sno); - PyGILState_STATE tg = python_acquire_GIL(); + term_t tg = python_acquire_GIL(); PyObject *flush = PyObject_GetAttrString(s->u.private_data, "flush"); PyObject_CallFunction(flush, NULL); python_release_GIL(tg); diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index d3c15276f..c29c2effe 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -1,700 +1 @@ - -#include "py4yap.h" - -PyObject *py_Main; - -void pyErrorHandler__(int line, const char *file, const char *code) { - // this code is called if a Python error is found. - fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); - PyErr_Print(); -} -static foreign_t python_len(term_t tobj, term_t tf) { - Py_ssize_t len; - PyObject *o; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - len = PyObject_Length(o); - pyErrorAndReturn(PL_unify_int64(tf), false); -} - -static foreign_t python_dir(term_t tobj, term_t tf) { - PyObject *dir; - PyObject *o; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - dir = PyObject_Dir(o); - { - foreign_t rc = address_to_term(dir, tf); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { - PyObject *i; - PyObject *o; - PyObject *f; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - if (!PySequence_Check(o)) { - pyErrorAndReturn(false); - } - i = term_to_python(tindex, true, NULL, true); - if (i == NULL) { - pyErrorAndReturn(false); - } -#if PY_MAJOR_VERSION < 3 - f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); -#else - f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); -#endif - { - foreign_t rc = address_to_term(f, val); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_is(term_t tobj, term_t tf) { - PyObject *o; - - term_t lim = python_acquire_GIL(); - - o = term_to_python(tobj, true, NULL, true); - if (!o) { - python_release_GIL(lim); - pyErrorAndReturn(false); - } - foreign_t rc = python_to_term(o, tf); - if (rc) - PyErr_Clear(); - python_release_GIL(lim); - pyErrorAndReturn(rc); -} - -static foreign_t python_proc(term_t tobj) { - PyObject *o; - - term_t lim = python_acquire_GIL(); - - o = term_to_python(tobj, true, NULL, true); - python_release_GIL(lim); - bool rc = o != NULL; - pyErrorAndReturn(rc); -} - -static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { - PyObject *pF, *pI; - - PyObject *p; - - // get Scope ... - pI = term_to_python(indx, true, NULL, true); - // got Scope.Exp - // get Scope ... - p = term_to_python(parent, true, NULL, true); - // Exp - if (!pI || !p) { - { pyErrorAndReturn(false); } - } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_DecRef(pI); - Py_DecRef(p); - Py_INCREF(pF); - { - foreign_t rc; - rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, - term_t tf) { - PyObject *pF; - PyObject *pArgs, *pKeywords; - PyObject *pValue; - int i, arity; - atom_t aname; - foreign_t out; - term_t targ = PL_new_term_ref(); - - pF = term_to_python(tin, true, NULL, true); - PyErr_Clear(); - if (pF == NULL) { - { pyErrorAndReturn(false); } - } - if (PL_is_atom(targs)) { - pArgs = NULL; - } else { - - if (!PL_get_name_arity(targs, &aname, &arity)) { - { pyErrorAndReturn(false); } - } - if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { - /* ignore (_) */ - pArgs = NULL; - } else { - - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - - if (!pArgs) { - pyErrorAndReturn(false); - } - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, targs, targ)) { - pyErrorAndReturn(false); - } - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - /* pArg reference stolen here: */ - PyTuple_SetItem(pArgs, i, pArg); - } - } - } - if (PL_is_atom(keywds)) { - pKeywords = NULL; - } else { - pKeywords = term_to_python(keywds, true, NULL, true); - } - if (PyCallable_Check(pF)) { - pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); - // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); - // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); - // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); - if (!pValue) - PyErr_Print(); - else - Py_IncRef(pValue); - } else if (pArgs == NULL) { - pValue = pF; - - if (pF) { - Py_IncRef(pValue); - } - } else { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - if (pArgs) - Py_DECREF(pArgs); - Py_DECREF(pF); - if (pValue == NULL) { - pyErrorAndReturn(false); - } - out = address_to_term(pValue, tf); - pyErrorAndReturn(out); -} - -static foreign_t assign_python(term_t exp, term_t name) { - term_t stackp = python_acquire_GIL(); - PyObject *e = term_to_python(exp, true, NULL, true); - - if (e == NULL) { - python_release_GIL(stackp); - pyErrorAndReturn(false); - } - bool b = python_assign(name, e, NULL); - python_release_GIL(stackp); - pyErrorAndReturn(b); -} - -static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { - PyErr_Clear(); - PyObject *pI, *pArgs, *pOut; - PyObject *env; - atom_t name; - char *s; - int i, arity; - term_t targ = PL_new_term_ref(); - - if ((env = py_Builtin) == NULL) { - // no point in even trying - { pyErrorAndReturn(false); } - } - if (PL_get_name_arity(caller, &name, &arity)) { - if (!(s = PL_atom_chars(name))) { - pyErrorAndReturn(false); - } - if ((pI = PyObject_GetAttrString(env, s)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_INCREF(pI); - } else { - // Prolog should make sure this never happens. - { pyErrorAndReturn(false); } - } - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, caller, targ)) { - pyErrorAndReturn(false); - } - /* ignore (_) */ - if (i == 0 && PL_is_variable(targ)) { - pArg = Py_None; - } else { - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - } - /* pArg reference stolen here: */ - if (PyTuple_SetItem(pArgs, i, pArg)) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - } - pOut = PyObject_CallObject(pI, pArgs); - Py_DECREF(pArgs); - Py_DECREF(pI); - if (pOut == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - { - foreign_t rc = address_to_term(pOut, out); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_access(term_t obj, term_t f, term_t out) { - PyErr_Clear(); - PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; - atom_t name; - char *s = NULL; - int i, arity; - term_t targ = PL_new_term_ref(); - - if (o == NULL) { - pyErrorAndReturn(false); - } - if (PL_is_atom(f)) { - if (!PL_get_atom_chars(f, &s)) { - pyErrorAndReturn(false); - } - if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_INCREF(pValue); - { pyErrorAndReturn(python_to_term(pValue), false); } - } - if (!PL_get_name_arity(f, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - if (!s) { - pyErrorAndReturn(false); - } - if ((pF = PyObject_GetAttrString(o, s)) == NULL) { - DebugPrintf("Function %p\n", o); - PyErr_Print(); - { pyErrorAndReturn(false); } - } - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, f, targ)) { - pyErrorAndReturn(false); - } - /* ignore (_) */ - if (i == 0 && PL_is_variable(targ)) { - pArgs = Py_None; - } - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - /* pArg reference stolen here: */ - PyTuple_SetItem(pArgs, i, pArg); - } - pValue = PyObject_CallObject(pF, pArgs); - Py_DECREF(pArgs); - Py_DECREF(pF); - if (pValue == NULL) { - { pyErrorAndReturn(false); } - } - { pyErrorAndReturn(python_to_term(pValue), false); } -} - -static foreign_t python_field(term_t parent, term_t att, term_t tobj) { - PyObject *pF; - atom_t name; - char *s; - int arity; - - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } else { - PyObject *p; - - // got Scope.Exp - // get Scope ... - p = term_to_python(parent, true, NULL, true); - // Exp - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - if (arity == 1 && !strcmp(s, "()")) { - if (!PL_get_arg(1, att, att)) { - pyErrorAndReturn(false); - } - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - } - if (!s || !p) { - { pyErrorAndReturn(false); } - } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { - PyErr_Clear(); - { pyErrorAndReturn(false); } - } - } - { - foreign_t rc; - rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_main_module(term_t mod) { - { - foreign_t rc; - PyErr_Clear(); - rc = address_to_term(py_Main, mod); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_function(term_t tobj) { - PyErr_Clear(); - PyObject *obj = term_to_python(tobj, true, NULL, true); - foreign_t rc = PyFunction_Check(obj); - - pyErrorAndReturn(rc); -} - -foreign_t python_builtin(term_t out) { - { - foreign_t rc; - PyErr_Clear(); - rc = address_to_term(py_Builtin, out); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_run_file(term_t file) { - char *s; - size_t len; - char si[256]; - s = si; - PyErr_Clear(); - if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { -#if PY_MAJOR_VERSION < 3 - PyObject *PyFileObject = PyFile_FromString(si, "r"); - PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); -#else - FILE *f = fopen(s, "r"); - if (f == NULL) { - pyErrorAndReturn(false); - } - PyRun_SimpleFileEx(f, s, 1); -#endif - { - { pyErrorAndReturn(true); } - } - } - { pyErrorAndReturn(false); } -} - -extern PyThreadState *YAP_save; - -static foreign_t python_run_command(term_t cmd) { - char *s; - bool rc = false; - size_t len; - char si[256]; - - PyErr_Clear(); - s = si; - if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { - PyRun_SimpleString(s); - rc = true; - } - pyErrorAndReturn(rc); -} - -static foreign_t python_run_script(term_t cmd, term_t fun) { - char si[256], sf[256]; - size_t len = 255, len1 = 255; - PyObject *pName, *pModule, *pFunc; - PyObject *pArgs = NULL, *pValue; - char *s; - - PyErr_Clear(); - s = si; - if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && - (s = sf) != NULL && - PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { - -#if PY_MAJOR_VERSION < 3 - pName = PyString_FromString("rbm"); -#else - // asssumes UTF-8 - pName = PyUnicode_FromString("rbm"); -#endif - /* Error checking of pName left out */ - - pModule = PyImport_Import(pName); - PyErr_Clear(); - Py_DECREF(pName); - - if (pModule != NULL) { - pFunc = PyObject_GetAttrString(pModule, sf); - /* pFunc is a new reference */ - - if (pFunc && PyCallable_Check(pFunc)) { - pValue = PyObject_CallObject(pFunc, pArgs); - if (pValue != NULL) { - Py_DECREF(pValue); - } else { - Py_DECREF(pFunc); - Py_DECREF(pModule); - PyErr_Print(); - fprintf(stderr, "Call failed\n"); - { pyErrorAndReturn(false); } - } - } else { - pyErrorHandler(); - if (PyErr_Occurred()) - PyErr_Print(); - fprintf(stderr, "Cannot find function \"%s\"\n", sf); - } - Py_XDECREF(pFunc); - Py_DECREF(pModule); - } else { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - { pyErrorAndReturn(true); } - } - { pyErrorAndReturn(false); } -} - -static foreign_t python_export(term_t t, term_t pl) { - foreign_t rc = false; - PyErr_Clear(); - if (PL_is_functor(t, FUNCTOR_pointer1)) { - void *ptr; - term_t targ = PL_new_term_ref(); - - if (!PL_get_arg(1, t, targ)) { - pyErrorAndReturn(false); - } - if (!PL_get_pointer(targ, &ptr)) { - pyErrorAndReturn(false); - } - Py_INCREF((PyObject *)ptr); - /* pyErrorAndReturn( __main__) */ - rc = python_to_term((PyObject *)ptr, pl); - } - pyErrorAndReturn(rc); -} - -/** - * @pred python_import(MName, Mod) - * Import a python module to the YAP environment. - * - * @param mname module name, either an atom or a sequence of atoms, - * eg os.sys - * @param mod the pointer to the Python object - * @return success? - */ -static int python_import(term_t mname, term_t mod) { - PyObject *pName; - - term_t t0 = python_acquire_GIL(); - term_t arg = PL_new_term_ref(); - char s0[MAXPATHLEN], *s = s0; - while (true) { - size_t len; - PyErr_Clear(); - len = (MAXPATHLEN - 1) - (s - s0); - if (PL_is_pair(mname)) { - char *sa = NULL; - if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || - !PL_get_arg(2, mname, mname)) { - python_release_GIL(t0); - pyErrorAndReturn(false); - } - PL_get_atom_chars(arg, &sa); - strcpy(s, sa); - s += strlen(s); - *s++ = '.'; - s[0] = '\0'; - } else if (!PL_get_nchars(mname, &len, &s, - CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { - python_release_GIL(t0); - pyErrorAndReturn(false); - } else { - break; - } - } -#if PY_MAJOR_VERSION < 3 - pName = PyString_FromString(s0); -#else - pName = PyUnicode_FromString(s0); -#endif - python_release_GIL(t0); - if (pName == NULL) { - pyErrorAndReturn(false); - } - - PyObject *pModule = PyImport_Import(pName); - - Py_DECREF(pName); - if (pModule == NULL) { -#if EXTRA_MESSSAGES - if (PyErr_Occurred()) - PyErr_Print(); - PyErr_Clear(); -#endif - { pyErrorAndReturn(false); } - } - { - foreign_t rc = address_to_term(pModule, mod); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_to_rhs(term_t inp, term_t t) { - PyObject *pVal; - PyErr_Clear(); - pVal = term_to_python(inp, true, NULL, true); - if (pVal == NULL) - pyErrorAndReturn(false); - pyErrorAndReturn(address_to_term(pVal), false); -} - -// static PyThreadState *_saveP = NULL; -static bool _threaded = false; - -/* -static YAP_Int - p_python_ensure(term_t ptr) - { - PyGILState_STATE _tState = PyGILState_Ensure(); - pyErrorAndReturn( PL_unify_int64(ptr), false); - } - -static YAP_Int - p_python_release(term_t ptr) - { - - PyGILState_STATE _tState; - PL_get_int64( ptr, &_tState); - PyGILState_Release( _tState ); - pyErrorAndReturn( true); - } -*/ - -int _locked = 0; -PyThreadState *tstate; - -static YAP_Int p_python_threaded(void) { - - PyErr_Clear(); - // PyEval_ReleaseThread(tstate); - // _threaded = true; - // _locked = 0; - pyErrorAndReturn(true); -} - -static PyGILState_STATE gstates[64]; -static int gstatei = 0; - -term_t python_acquire_GIL(void) { -static PyGILState_STATE gstate; - term_t curSlot = PL_new_term_ref(); - // extern int Yap_do_low_level_trace; - // Yap_do_low_level_trace = 1; - // fprintf( stderr, "++%d\n", ++_locked); - // if (_locked > 0) { _locked++ ; } - // else - if (_threaded) { - gstates[gstatei] = PyGILState_Ensure(); - } - fprintf(stderr, "+%d\n", (int)gstatei); - PL_put_integer(curSlot, gstatei++); - return curSlot; -} - -bool python_release_GIL(term_t curBlock) { - PyGILState_STATE gstate; - int gstateix; - - PL_get_integer(curBlock, &gstateix); - PL_reset_term_refs(curBlock); - if (gstatei != gstateix) { - if (gstateix > gstatei) { - fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); - return false; - } else { - fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); - return false; - } - } - if (_threaded) { - PyGILState_Release(gstates[gstatei--]); - } - pyErrorAndReturn(true); -} - -/ -install_t install_pypreds(void) { - PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); - PL_register_foreign("python_builtin", 1, python_builtin, 0); - PL_register_foreign("python_import", 2, python_import, 0); - PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); - PL_register_foreign("python_len", 2, python_len, 0); - PL_register_foreign("python_is", 2, python_is, 0); - PL_register_foreign("python_dir", 2, python_dir, 0); - PL_register_foreign("python_apply", 4, python_apply, 0); - PL_register_foreign("python_index", 3, python_index, 0); - PL_register_foreign("python_field", 3, python_field, 0); - PL_register_foreign("python_assign", 2, assign_python, 0); - PL_register_foreign("python_export", 2, python_export, 0); - PL_register_foreign("python_function", 1, python_function, 0); - PL_register_foreign("python_slice", 4, python_slice, 0); - PL_register_foreign("python_run_file", 1, python_run_file, 0); - PL_register_foreign("python_proc", 1, python_proc, 0); - PL_register_foreign("python_run_command", 1, python_run_command, 0); - PL_register_foreign("python_run_script", 2, python_run_script, 0); - PL_register_foreign("python_main_module", 1, python_main_module, 0); - PL_register_foreign("python_import", 2, python_import, 0); - PL_register_foreign("python_access", 3, python_access, 0); - PL_register_foreign("python_threaded", 0, p_python_threaded, 0); - - init_python_vfs(); -} + #include "py4yap.h" PyObject *py_Main; void pyErrorHandler__(int line, const char *file, const char *code) { // this code is called if a Python error is found. fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); PyErr_Print(); } static foreign_t python_len(term_t tobj, term_t tf) { Py_ssize_t len; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } len = PyObject_Length(o); pyErrorAndReturn(PL_unify_int64(tf, len)); } static foreign_t python_dir(term_t tobj, term_t tf) { PyObject *dir; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } dir = PyObject_Dir(o); { foreign_t rc = address_to_term(dir, tf); ; pyErrorAndReturn(rc); } } static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { PyObject *i; PyObject *o; PyObject *f; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } if (!PySequence_Check(o)) { pyErrorAndReturn(false); } i = term_to_python(tindex, true, NULL, true); if (i == NULL) { pyErrorAndReturn(false); } #if PY_MAJOR_VERSION < 3 f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); #else f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); #endif { foreign_t rc = address_to_term(f, val); ; pyErrorAndReturn(rc); } } static foreign_t python_is(term_t tobj, term_t tf) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); if (!o) { python_release_GIL(lim); pyErrorAndReturn(false); } foreign_t rc = python_to_term(o, tf); if (rc) PyErr_Clear(); python_release_GIL(lim); pyErrorAndReturn(rc); } static foreign_t python_proc(term_t tobj) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); python_release_GIL(lim); bool rc = o != NULL; pyErrorAndReturn(rc); } static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { PyObject *pF, *pI; PyObject *p; // get Scope ... pI = term_to_python(indx, true, NULL, true); // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!pI || !p) { { pyErrorAndReturn(false); } } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_DecRef(pI); Py_DecRef(p); Py_INCREF(pF); { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, term_t tf) { PyObject *pF; PyObject *pArgs, *pKeywords; PyObject *pValue; int i, arity; atom_t aname; foreign_t out; term_t targ = PL_new_term_ref(); pF = term_to_python(tin, true, NULL, true); PyErr_Clear(); if (pF == NULL) { { pyErrorAndReturn(false); } } if (PL_is_atom(targs)) { pArgs = NULL; } else { if (!PL_get_name_arity(targs, &aname, &arity)) { { pyErrorAndReturn(false); } } if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { /* ignore (_) */ pArgs = NULL; } else { pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); if (!pArgs) { pyErrorAndReturn(false); } for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, targs, targ)) { pyErrorAndReturn(false); } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } } } if (PL_is_atom(keywds)) { pKeywords = NULL; } else { pKeywords = term_to_python(keywds, true, NULL, true); } if (PyCallable_Check(pF)) { pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); if (!pValue) PyErr_Print(); else Py_IncRef(pValue); } else if (pArgs == NULL) { pValue = pF; if (pF) { Py_IncRef(pValue); } } else { PyErr_Print(); { pyErrorAndReturn(false); } } if (pArgs) Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { pyErrorAndReturn(false); } out = address_to_term(pValue, tf); pyErrorAndReturn(out); } static foreign_t assign_python(term_t exp, term_t name) { term_t stackp = python_acquire_GIL(); PyObject *e = term_to_python(exp, true, NULL, true); if (e == NULL) { python_release_GIL(stackp); pyErrorAndReturn(false); } bool b = python_assign(name, e, NULL); python_release_GIL(stackp); pyErrorAndReturn(b); } static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { PyErr_Clear(); PyObject *pI, *pArgs, *pOut; PyObject *env; atom_t name; char *s; int i, arity; term_t targ = PL_new_term_ref(); if ((env = py_Builtin) == NULL) { // no point in even trying { pyErrorAndReturn(false); } } if (PL_get_name_arity(caller, &name, &arity)) { if (!(s = PL_atom_chars(name))) { pyErrorAndReturn(false); } if ((pI = PyObject_GetAttrString(env, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pI); } else { // Prolog should make sure this never happens. { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, caller, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArg = Py_None; } else { pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } } /* pArg reference stolen here: */ if (PyTuple_SetItem(pArgs, i, pArg)) { PyErr_Print(); { pyErrorAndReturn(false); } } } pOut = PyObject_CallObject(pI, pArgs); Py_DECREF(pArgs); Py_DECREF(pI); if (pOut == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } { foreign_t rc = address_to_term(pOut, out); ; pyErrorAndReturn(rc); } } static foreign_t python_access(term_t obj, term_t f, term_t out) { PyErr_Clear(); PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; atom_t name; char *s = NULL; int i, arity; term_t targ = PL_new_term_ref(); if (o == NULL) { pyErrorAndReturn(false); } if (PL_is_atom(f)) { if (!PL_get_atom_chars(f, &s)) { pyErrorAndReturn(false); } if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pValue); { pyErrorAndReturn(python_to_term(pValue, out) ); } } if (!PL_get_name_arity(f, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (!s) { pyErrorAndReturn(false); } if ((pF = PyObject_GetAttrString(o, s)) == NULL) { DebugPrintf("Function %p\n", o); PyErr_Print(); { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, f, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArgs = Py_None; } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } pValue = PyObject_CallObject(pF, pArgs); Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { { pyErrorAndReturn(false); } } { pyErrorAndReturn(python_to_term(pValue, out)); } } static foreign_t python_field(term_t parent, term_t att, term_t tobj) { PyObject *pF; atom_t name; char *s; int arity; if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } else { PyObject *p; // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (arity == 1 && !strcmp(s, "()")) { if (!PL_get_arg(1, att, att)) { pyErrorAndReturn(false); } if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); } if (!s || !p) { { pyErrorAndReturn(false); } } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { PyErr_Clear(); { pyErrorAndReturn(false); } } } { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_main_module(term_t mod) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Main, mod); pyErrorAndReturn(rc); } } static foreign_t python_function(term_t tobj) { PyErr_Clear(); PyObject *obj = term_to_python(tobj, true, NULL, true); foreign_t rc = PyFunction_Check(obj); pyErrorAndReturn(rc); } foreign_t python_builtin(term_t out) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Builtin, out); pyErrorAndReturn(rc); } } static foreign_t python_run_file(term_t file) { char *s; size_t len; char si[256]; s = si; PyErr_Clear(); if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 PyObject *PyFileObject = PyFile_FromString(si, "r"); PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); #else FILE *f = fopen(s, "r"); if (f == NULL) { pyErrorAndReturn(false); } PyRun_SimpleFileEx(f, s, 1); #endif { { pyErrorAndReturn(true); } } } { pyErrorAndReturn(false); } } extern PyThreadState *YAP_save; static foreign_t python_run_command(term_t cmd) { char *s; bool rc = false; size_t len; char si[256]; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { PyRun_SimpleString(s); rc = true; } pyErrorAndReturn(rc); } static foreign_t python_run_script(term_t cmd, term_t fun) { char si[256], sf[256]; size_t len = 255, len1 = 255; PyObject *pName, *pModule, *pFunc; PyObject *pArgs = NULL, *pValue; char *s; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && (s = sf) != NULL && PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 pName = PyString_FromString("rbm"); #else // asssumes UTF-8 pName = PyUnicode_FromString("rbm"); #endif /* Error checking of pName left out */ pModule = PyImport_Import(pName); PyErr_Clear(); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, sf); /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { pValue = PyObject_CallObject(pFunc, pArgs); if (pValue != NULL) { Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr, "Call failed\n"); { pyErrorAndReturn(false); } } } else { pyErrorHandler(); if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", sf); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); { pyErrorAndReturn(false); } } { pyErrorAndReturn(true); } } { pyErrorAndReturn(false); } } static foreign_t python_export(term_t t, term_t pl) { foreign_t rc = false; PyErr_Clear(); if (PL_is_functor(t, FUNCTOR_pointer1)) { void *ptr; term_t targ = PL_new_term_ref(); if (!PL_get_arg(1, t, targ)) { pyErrorAndReturn(false); } if (!PL_get_pointer(targ, &ptr)) { pyErrorAndReturn(false); } Py_INCREF((PyObject *)ptr); /* pyErrorAndReturn( __main__) */ rc = python_to_term((PyObject *)ptr, pl); } pyErrorAndReturn(rc); } /** * @pred python_import(MName, Mod) * Import a python module to the YAP environment. * * @param mname module name, either an atom or a sequence of atoms, * eg os.sys * @param mod the pointer to the Python object * @return success? */ static int python_import(term_t mname, term_t mod) { PyObject *pName; term_t arg = PL_new_term_ref(); char s0[MAXPATHLEN], *s = s0; while (true) { size_t len; //PyErr_Clear(); len = (MAXPATHLEN - 1) - (s - s0); if (PL_is_pair(mname)) { char *sa = NULL; if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || !PL_get_arg(2, mname, mname)) { pyErrorAndReturn(false); } PL_get_atom_chars(arg, &sa); strcpy(s, sa); s += strlen(s); *s++ = '.'; s[0] = '\0'; } else if (!PL_get_nchars(mname, &len, &s, CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { pyErrorAndReturn(false); } else { break; } } term_t t0 = python_acquire_GIL(); #if PY_MAJOR_VERSION < 3 pName = PyString_FromString(s0); #else pName = PyUnicode_FromString(s0); #endif if (pName == NULL) { python_release_GIL(t0); pyErrorAndReturn(false); } PyObject *pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule == NULL) { #if EXTRA_MESSSAGES if (PyErr_Occurred()) PyErr_Print(); PyErr_Clear(); #endif python_release_GIL(t0); pyErrorAndReturn(false); } { foreign_t rc = address_to_term(pModule, mod); python_release_GIL(t0); pyErrorAndReturn(rc); } } static foreign_t python_to_rhs(term_t inp, term_t t) { PyObject *pVal; PyErr_Clear(); pVal = term_to_python(inp, true, NULL, true); if (pVal == NULL) pyErrorAndReturn(false); pyErrorAndReturn(address_to_term(pVal, t)); } // static PyThreadState *_saveP = NULL; static bool _threaded = true; /* static YAP_Int p_python_ensure(term_t ptr) { PyGILState_STATE _tState = PyGILState_Ensure(); pyErrorAndReturn( PL_unify_int64(ptr), false); } static YAP_Int p_python_release(term_t ptr) { PyGILState_STATE _tState; PL_get_int64( ptr, &_tState); PyGILState_Release( _tState ); pyErrorAndReturn( true); } */ int _locked = 0; PyThreadState *tstate; static YAP_Int p_python_threaded(void) { PyErr_Clear(); // PyEval_ReleaseThread(tstate); // _threaded = true; // _locked = 0; pyErrorAndReturn(true); } static PyGILState_STATE gstates[64]; static int gstatei = 0; term_t python_acquire_GIL(void) { term_t curSlot = PL_new_term_ref(); // extern int Yap_do_low_level_trace; // Yap_do_low_level_trace = 1; // fprintf( stderr, "++%d\n", ++_locked); // if (_locked > 0) { _locked++ ; } // else if (_threaded) { gstates[gstatei] = PyGILState_Ensure(); } fprintf(stderr, "+%d\n", (int)gstatei); PL_put_integer(curSlot, gstatei++); return curSlot; } bool python_release_GIL(term_t curBlock) { int gstateix; gstatei--; PL_get_integer(curBlock, &gstateix); PL_reset_term_refs(curBlock); if (gstatei != gstateix) { if (gstateix > gstatei) { fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); return false; } else { fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); return false; } } if (_threaded) { PyGILState_Release(gstates[gstatei]); } pyErrorAndReturn(true); } install_t install_pypreds(void) { PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); PL_register_foreign("python_builtin", 1, python_builtin, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); PL_register_foreign("python_len", 2, python_len, 0); PL_register_foreign("python_is", 2, python_is, 0); PL_register_foreign("python_dir", 2, python_dir, 0); PL_register_foreign("python_apply", 4, python_apply, 0); PL_register_foreign("python_index", 3, python_index, 0); PL_register_foreign("python_field", 3, python_field, 0); PL_register_foreign("python_assign", 2, assign_python, 0); PL_register_foreign("python_export", 2, python_export, 0); PL_register_foreign("python_function", 1, python_function, 0); PL_register_foreign("python_slice", 4, python_slice, 0); PL_register_foreign("python_run_file", 1, python_run_file, 0); PL_register_foreign("python_proc", 1, python_proc, 0); PL_register_foreign("python_run_command", 1, python_run_command, 0); PL_register_foreign("python_run_script", 2, python_run_script, 0); PL_register_foreign("python_main_module", 1, python_main_module, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_access", 3, python_access, 0); PL_register_foreign("python_threaded", 0, p_python_threaded, 0); init_python_vfs(); } \ No newline at end of file diff --git a/packages/python/swig/MANIFEST.in b/packages/python/swig/MANIFEST.in index 87d5b4aea..99f04ba41 100644 --- a/packages/python/swig/MANIFEST.in +++ b/packages/python/swig/MANIFEST.in @@ -1,5 +1,6 @@ # include CONTRIBUTING.md include README.md +include *.py recursive-include yap4py/prolog *.* recursive-include html *.* diff --git a/packages/python/swig/yap4py/__init__.py.in b/packages/python/swig/yap4py/__init__.py.in index 1f7ffb8a2..e4e183958 100644 --- a/packages/python/swig/yap4py/__init__.py.in +++ b/packages/python/swig/yap4py/__init__.py.in @@ -30,4 +30,4 @@ else: dll = glob.glob(os.path.join(os.path.dirname(__file__),dll))[0] dll = os.path.abspath(dll) ctypes.CDLL(dll) - load('_yap*.so') + #load('_yap*.so') diff --git a/packages/python/swig/yap4py/yapi.py b/packages/python/swig/yap4py/yapi.py index 25d4853da..a26d3b007 100644 --- a/packages/python/swig/yap4py/yapi.py +++ b/packages/python/swig/yap4py/yapi.py @@ -1,5 +1,5 @@ import readline -from yap4py.yap import YAPEngine, YAPEngineArgs, YAPPredicate, YAPQuery, YAPPrologPredicate, YAPVarTerm +from yap4py.yap import * from os.path import join, dirname from collections import namedtuple import sys @@ -144,7 +144,7 @@ class YAPShell: # if not isinstance(eq[0],str): # print( "Error: Variable Name matches a Python Symbol") # return - do_ask = True + self.do_ask = True engine = self.engine bindings = [] g = python_query(self, query) @@ -152,7 +152,7 @@ class YAPShell: self.q = Query( engine, g ) for bind in self.q: bindings += [bind] - if do_ask: + if self.do_ask: print(bindings) bindings = [] s = input("more(;), all(*), no(\\n), python(#) ?").lstrip() @@ -166,7 +166,7 @@ class YAPShell: except: raise elif s.startswith('*') or s.startswith('a'): - do_ask = False + self.do_ask = False continue else: break diff --git a/packages/python/yap_kernel/CMakeLists.txt b/packages/python/yap_kernel/CMakeLists.txt index 697e41ae5..92e1598e4 100644 --- a/packages/python/yap_kernel/CMakeLists.txt +++ b/packages/python/yap_kernel/CMakeLists.txt @@ -2,362 +2,388 @@ set (PYTHON_SOURCES yap_kernel_launcher.py docs/conf.py -yap_kernel/serialize.py -yap_kernel/_eventloop_macos.py -yap_kernel/jsonutil.py -yap_kernel/pickleutil.py -yap_kernel/pylab/backend_inline.py -yap_kernel/pylab/config.py -yap_kernel/pylab/__init__.py -yap_kernel/displayhook.py -yap_kernel/__main__.py -yap_kernel/gui/gtk3embed.py -yap_kernel/gui/gtkembed.py -yap_kernel/gui/__init__.py -yap_kernel/parentpoller.py -yap_kernel/_version.py -yap_kernel/eventloops.py -yap_kernel/connect.py -yap_kernel/comm/comm.py -yap_kernel/comm/__init__.py -yap_kernel/comm/manager.py -yap_kernel/kernelspec.py -yap_kernel/iostream.py -yap_kernel/zmqshell.py -yap_kernel/kernelbase.py -yap_kernel/heartbeat.py -yap_kernel/log.py -yap_kernel/datapub.py -yap_kernel/codeutil.py -yap_kernel/kernelapp.py -yap_kernel/embed.py -yap_kernel/tests/test_embed_kernel.py -yap_kernel/tests/test_kernelspec.py -yap_kernel/tests/_asyncio.py -yap_kernel/tests/test_serialize.py -yap_kernel/tests/test_pickleutil.py -yap_kernel/tests/test_eventloop.py -yap_kernel/tests/utils.py -yap_kernel/tests/test_kernel.py -yap_kernel/tests/test_io.py -yap_kernel/tests/test_jsonutil.py -yap_kernel/tests/test_connect.py -yap_kernel/tests/test_message_spec.py -yap_kernel/tests/__init__.py -yap_kernel/tests/test_start_kernel.py -yap_kernel/tests/test_zmq_shell.py -yap_kernel/__init__.py -yap_kernel/inprocess/blocking.py -yap_kernel/inprocess/socket.py -yap_kernel/inprocess/constants.py -yap_kernel/inprocess/channels.py -yap_kernel/inprocess/tests/test_kernelmanager.py -yap_kernel/inprocess/tests/test_kernel.py -yap_kernel/inprocess/tests/__init__.py -yap_kernel/inprocess/__init__.py -yap_kernel/inprocess/manager.py -yap_kernel/inprocess/client.py -yap_kernel/inprocess/ipkernel.py -yap_kernel/ipkernel.py -yap_ipython/display.py -yap_ipython/frontend.py -yap_ipython/parallel.py -yap_ipython/html.py -yap_ipython/__main__.py -_version.py -yap_ipython/_version.py -yap_ipython/testing/iptest.py -yap_ipython/testing/skipdoctest.py -yap_ipython/testing/tools.py -yap_ipython/testing/iptestcontroller.py -yap_ipython/testing/__main__.py -yap_ipython/testing/decorators.py -yap_ipython/testing/ipunittest.py -yap_ipython/testing/tests/test_tools.py -yap_ipython/testing/tests/test_ipunittest.py -yap_ipython/testing/tests/test_decorators.py -yap_ipython/testing/tests/__init__.py -yap_ipython/testing/__init__.py -yap_ipython/testing/globalipapp.py -yap_ipython/testing/plugin/iptest.py -yap_ipython/testing/plugin/show_refs.py -yap_ipython/testing/plugin/simplevars.py -yap_ipython/testing/plugin/simple.py -yap_ipython/testing/plugin/ipdoctest.py -yap_ipython/testing/plugin/test_ipdoctest.py -yap_ipython/testing/plugin/setup.py -yap_ipython/testing/plugin/__init__.py -yap_ipython/testing/plugin/dtexample.py -yap_ipython/testing/plugin/test_refs.py -yap_ipython/terminal/ptutils.py -yap_ipython/terminal/shortcuts.py -yap_ipython/terminal/ipapp.py -yap_ipython/terminal/pt_inputhooks/wx.py -yap_ipython/terminal/pt_inputhooks/pyglet.py -yap_ipython/terminal/pt_inputhooks/osx.py -yap_ipython/terminal/pt_inputhooks/gtk.py -yap_ipython/terminal/pt_inputhooks/tk.py -yap_ipython/terminal/pt_inputhooks/glut.py -yap_ipython/terminal/pt_inputhooks/gtk3.py -yap_ipython/terminal/pt_inputhooks/__init__.py -yap_ipython/terminal/pt_inputhooks/qt.py -yap_ipython/terminal/console.py -yap_ipython/terminal/prompts.py -yap_ipython/terminal/ptshell.py -yap_ipython/terminal/embed.py -yap_ipython/terminal/tests/test_help.py -yap_ipython/terminal/tests/test_embed.py -yap_ipython/terminal/tests/test_interactivshell.py -yap_ipython/terminal/tests/__init__.py -yap_ipython/terminal/__init__.py -yap_ipython/terminal/interactiveshell.py -yap_ipython/terminal/debugger.py -yap_ipython/terminal/magics.py -yap_ipython/consoleapp.py -yap_ipython/core/display.py -yap_ipython/core/application.py -yap_ipython/core/builtin_trap.py -yap_ipython/core/formatters.py -yap_ipython/core/prefilter.py -yap_ipython/core/getipython.py -yap_ipython/core/usage.py -yap_ipython/core/oinspect.py -yap_ipython/core/displayhook.py -yap_ipython/core/hooks.py -yap_ipython/core/splitinput.py -yap_ipython/core/page.py -yap_ipython/core/history.py -yap_ipython/core/displaypub.py -yap_ipython/core/profiledir.py -yap_ipython/core/shellapp.py -yap_ipython/core/extensions.py -yap_ipython/core/compilerop.py -yap_ipython/core/events.py -yap_ipython/core/pylabtools.py -yap_ipython/core/completer.py -yap_ipython/core/prompts.py -yap_ipython/core/latex_symbols.py -yap_ipython/core/macro.py -yap_ipython/core/inputsplitter.py -yap_ipython/core/error.py -yap_ipython/core/profileapp.py -yap_ipython/core/magic_arguments.py -yap_ipython/core/logger.py -yap_ipython/core/inputtransformer.py -yap_ipython/core/payloadpage.py -yap_ipython/core/crashhandler.py -yap_ipython/core/magics/display.py -yap_ipython/core/magics/execution.py -yap_ipython/core/magics/namespace.py -yap_ipython/core/magics/basic.py -yap_ipython/core/magics/extension.py -yap_ipython/core/magics/history.py -yap_ipython/core/magics/pylab.py -yap_ipython/core/magics/config.py -yap_ipython/core/magics/osm.py -yap_ipython/core/magics/script.py -yap_ipython/core/magics/__init__.py -yap_ipython/core/magics/auto.py -yap_ipython/core/magics/logging.py -yap_ipython/core/magics/code.py -yap_ipython/core/ultratb.py -yap_ipython/core/tests/test_application.py -yap_ipython/core/tests/simpleerr.py -yap_ipython/core/tests/test_paths.py -yap_ipython/core/tests/bad_all.py -yap_ipython/core/tests/test_prefilter.py -yap_ipython/core/tests/test_logger.py -yap_ipython/core/tests/test_interactiveshell.py -yap_ipython/core/tests/test_events.py -yap_ipython/core/tests/test_display.py -yap_ipython/core/tests/test_autocall.py -yap_ipython/core/tests/test_formatters.py -yap_ipython/core/tests/test_alias.py -yap_ipython/core/tests/nonascii.py -yap_ipython/core/tests/test_displayhook.py -yap_ipython/core/tests/test_profile.py -yap_ipython/core/tests/test_imports.py -yap_ipython/core/tests/test_oinspect.py -yap_ipython/core/tests/test_inputtransformer.py -yap_ipython/core/tests/test_magic_arguments.py -yap_ipython/core/tests/test_debugger.py -yap_ipython/core/tests/test_hooks.py -yap_ipython/core/tests/test_run.py -yap_ipython/core/tests/test_pylabtools.py -yap_ipython/core/tests/print_argv.py -yap_ipython/core/tests/test_page.py -yap_ipython/core/tests/test_compilerop.py -yap_ipython/core/tests/test_prompts.py -yap_ipython/core/tests/test_magic_terminal.py -yap_ipython/core/tests/__init__.py -yap_ipython/core/tests/test_ultratb.py -yap_ipython/core/tests/test_magic.py -yap_ipython/core/tests/test_iplib.py -yap_ipython/core/tests/test_completer.py -yap_ipython/core/tests/test_shellapp.py -yap_ipython/core/tests/daft_extension/daft_extension.py -yap_ipython/core/tests/refbug.py -yap_ipython/core/tests/tclass.py -yap_ipython/core/tests/test_extension.py -yap_ipython/core/tests/test_splitinput.py -yap_ipython/core/tests/test_completerlib.py -yap_ipython/core/tests/nonascii2.py -yap_ipython/core/tests/test_inputsplitter.py -yap_ipython/core/tests/test_handlers.py -yap_ipython/core/tests/test_history.py -yap_ipython/core/__init__.py -yap_ipython/core/autocall.py -yap_ipython/core/alias.py -yap_ipython/core/completerlib.py -yap_ipython/core/magic.py -yap_ipython/core/interactiveshell.py -yap_ipython/core/excolors.py -yap_ipython/core/release.py -yap_ipython/core/display_trap.py -yap_ipython/core/debugger.py -yap_ipython/core/historyapp.py -yap_ipython/core/payload.py -yap_ipython/config.py -yap_ipython/utils/frame.py -yap_ipython/utils/ipstruct.py -yap_ipython/utils/module_paths.py -yap_ipython/utils/jsonutil.py -yap_ipython/utils/PyColorize.py -yap_ipython/utils/pickleutil.py -yap_ipython/utils/eventful.py -yap_ipython/utils/ulinecache.py -yap_ipython/utils/generics.py -yap_ipython/utils/version.py -yap_ipython/utils/tz.py -yap_ipython/utils/_process_cli.py -yap_ipython/utils/wildcard.py -yap_ipython/utils/dir2.py -yap_ipython/utils/strdispatch.py -yap_ipython/utils/sysinfo.py -yap_ipython/utils/io.py -yap_ipython/utils/decorators.py -yap_ipython/utils/contexts.py -yap_ipython/utils/data.py -yap_ipython/utils/terminal.py -yap_ipython/utils/syspathcontext.py -yap_ipython/utils/tokenize2.py -yap_ipython/utils/localinterfaces.py -yap_ipython/utils/_process_win32_controller.py -yap_ipython/utils/py3compat.py -yap_ipython/utils/sentinel.py -yap_ipython/utils/colorable.py -yap_ipython/utils/_sysinfo.py -yap_ipython/utils/importstring.py -yap_ipython/utils/tokenutil.py -yap_ipython/utils/traitlets.py -yap_ipython/utils/path.py -yap_ipython/utils/daemonize.py -yap_ipython/utils/log.py -yap_ipython/utils/openpy.py -yap_ipython/utils/tempdir.py -yap_ipython/utils/_process_common.py -yap_ipython/utils/tests/test_openpy.py -yap_ipython/utils/tests/test_path.py -yap_ipython/utils/tests/test_shimmodule.py -yap_ipython/utils/tests/test_sysinfo.py -yap_ipython/utils/tests/test_pycolorize.py -yap_ipython/utils/tests/test_wildcard.py -yap_ipython/utils/tests/test_imports.py -yap_ipython/utils/tests/test_importstring.py -yap_ipython/utils/tests/test_module_paths.py -yap_ipython/utils/tests/test_io.py -yap_ipython/utils/tests/test_text.py -yap_ipython/utils/tests/test_decorators.py -yap_ipython/utils/tests/test_tokenutil.py -yap_ipython/utils/tests/test_process.py -yap_ipython/utils/tests/test_dir2.py -yap_ipython/utils/tests/__init__.py -yap_ipython/utils/tests/test_capture.py -yap_ipython/utils/tests/test_tempdir.py -yap_ipython/utils/encoding.py -yap_ipython/utils/__init__.py -yap_ipython/utils/signatures.py -yap_ipython/utils/_process_win32.py -yap_ipython/utils/coloransi.py -yap_ipython/utils/_process_posix.py -yap_ipython/utils/shimmodule.py -yap_ipython/utils/timing.py -yap_ipython/utils/text.py -yap_ipython/utils/process.py -yap_ipython/utils/capture.py -yap_ipython/paths.py -yap_ipython/nbconvert.py -yap_ipython/external/mathjax.py -yap_ipython/external/qt_for_kernel.py -yap_ipython/external/decorators/_numpy_testing_noseclasses.py -yap_ipython/external/decorators/_decorators.py -yap_ipython/external/decorators/__init__.py -yap_ipython/external/__init__.py -yap_ipython/external/qt_loaders.py -yap_ipython/__init__.py -yap_ipython/sphinxext/ipython_console_highlighting.py -yap_ipython/sphinxext/ipython_directive.py -yap_ipython/sphinxext/custom_doctests.py -yap_ipython/sphinxext/__init__.py -yap_ipython/kernel/adapter.py -yap_ipython/kernel/channelsabc.py -yap_ipython/kernel/__main__.py -yap_ipython/kernel/launcher.py -yap_ipython/kernel/multikernelmanager.py -yap_ipython/kernel/restarter.py -yap_ipython/kernel/managerabc.py -yap_ipython/kernel/threaded.py -yap_ipython/kernel/clientabc.py -yap_ipython/kernel/connect.py -yap_ipython/kernel/kernelspecapp.py -yap_ipython/kernel/kernelspec.py -yap_ipython/kernel/channels.py -yap_ipython/kernel/__init__.py -yap_ipython/kernel/manager.py -yap_ipython/kernel/client.py -yap_ipython/nbformat.py -yap_ipython/extensions/cythonmagic.py -yap_ipython/extensions/storemagic.py -yap_ipython/extensions/tests/test_autoreload.py -yap_ipython/extensions/tests/test_storemagic.py -yap_ipython/extensions/tests/__init__.py -yap_ipython/extensions/__init__.py -yap_ipython/extensions/rmagic.py -yap_ipython/extensions/sympyprinting.py -yap_ipython/extensions/autoreload.py -yap_ipython/yapi.py -yap_ipython/qt.py -yap_ipython/lib/display.py -yap_ipython/lib/pretty.py -yap_ipython/lib/inputhookgtk.py -yap_ipython/lib/inputhookwx.py -yap_ipython/lib/lexers.py -yap_ipython/lib/demo.py -yap_ipython/lib/inputhookgtk3.py -yap_ipython/lib/kernel.py -yap_ipython/lib/inputhookpyglet.py -yap_ipython/lib/editorhooks.py -yap_ipython/lib/inputhook.py -yap_ipython/lib/backgroundjobs.py -yap_ipython/lib/latextools.py -yap_ipython/lib/deepreload.py -yap_ipython/lib/tests/test_editorhooks.py -yap_ipython/lib/tests/test_backgroundjobs.py -yap_ipython/lib/tests/test_display.py -yap_ipython/lib/tests/test_pretty.py -yap_ipython/lib/tests/test_imports.py -yap_ipython/lib/tests/test_clipboard.py -yap_ipython/lib/tests/test_lexers.py -yap_ipython/lib/tests/test_deepreload.py -yap_ipython/lib/tests/test_security.py -yap_ipython/lib/tests/__init__.py -yap_ipython/lib/tests/test_latextools.py -yap_ipython/lib/__init__.py -yap_ipython/lib/guisupport.py -yap_ipython/lib/security.py -yap_ipython/lib/inputhookglut.py -yap_ipython/lib/clipboard.py -yap_ipython/lib/inputhookqt4.py +yap_kernel/codeutil.py +yap_kernel/comm +yap_kernel/connect.py +yap_kernel/datapub.py +yap_kernel/displayhook.py +yap_kernel/embed.py +yap_kernel/_eventloop_macos.py +yap_kernel/eventloops.py +yap_kernel/gui +yap_kernel/heartbeat.py +yap_kernel/__init__.py +yap_kernel/inprocess +yap_kernel/iostream.py +yap_kernel/ipkernel.py +yap_kernel/jsonutil.py +yap_kernel/kernelapp.py +yap_kernel/kernelbase.py +yap_kernel/kernelspec.py +yap_kernel/log.py +yap_kernel/__main__.py +yap_kernel/parentpoller.py +yap_kernel/pickleutil.py +yap_kernel/pylab +yap_kernel/serialize.py +yap_kernel/tests +yap_kernel/_version.py +yap_kernel/zmqshell.py +yap_ipython/config.py +yap_ipython/consoleapp.py +yap_ipython/core +yap_ipython/display.py +yap_ipython/extensions +yap_ipython/external +yap_ipython/frontend.py +yap_ipython/html.py +yap_ipython/__init__.py +yap_ipython/kernel +yap_ipython/lib +yap_ipython/__main__.py +yap_ipython/nbconvert.py +yap_ipython/nbformat.py +yap_ipython/parallel.py +yap_ipython/paths.py +yap_ipython/prolog +yap_ipython/qt.py +yap_ipython/sphinxext +yap_ipython/terminal +yap_ipython/testing +yap_ipython/utils +yap_ipython/yapi.py +yap_kernel/comm/comm.py +yap_kernel/comm/__init__.py +yap_kernel/comm/manager.py +yap_kernel/gui/gtk3embed.py +yap_kernel/gui/gtkembed.py +yap_kernel/gui/__init__.py +yap_kernel/inprocess/blocking.py +yap_kernel/inprocess/channels.py +yap_kernel/inprocess/client.py +yap_kernel/inprocess/constants.py +yap_kernel/inprocess/__init__.py +yap_kernel/inprocess/ipkernel.py +yap_kernel/inprocess/manager.py +yap_kernel/inprocess/socket.py +yap_kernel/inprocess/tests +yap_kernel/pylab/backend_inline.py +yap_kernel/pylab/config.py +yap_kernel/pylab/__init__.py +yap_kernel/tests/_asyncio.py +yap_kernel/tests/__init__.py +yap_kernel/tests/test_connect.py +yap_kernel/tests/test_embed_kernel.py +yap_kernel/tests/test_eventloop.py +yap_kernel/tests/test_io.py +yap_kernel/tests/test_jsonutil.py +yap_kernel/tests/test_kernel.py +yap_kernel/tests/test_kernelspec.py +yap_kernel/tests/test_message_spec.py +yap_kernel/tests/test_pickleutil.py +yap_kernel/tests/test_serialize.py +yap_kernel/tests/test_start_kernel.py +yap_kernel/tests/test_zmq_shell.py +yap_kernel/tests/utils.py +yap_ipython/core/alias.py +yap_ipython/core/application.py +yap_ipython/core/autocall.py +yap_ipython/core/builtin_trap.py +yap_ipython/core/compilerop.py +yap_ipython/core/completerlib.py +yap_ipython/core/completer.py +yap_ipython/core/crashhandler.py +yap_ipython/core/debugger.py +yap_ipython/core/displayhook.py +yap_ipython/core/displaypub.py +yap_ipython/core/display.py +yap_ipython/core/display_trap.py +yap_ipython/core/error.py +yap_ipython/core/events.py +yap_ipython/core/excolors.py +yap_ipython/core/extensions.py +yap_ipython/core/formatters.py +yap_ipython/core/getipython.py +yap_ipython/core/historyapp.py +yap_ipython/core/history.py +yap_ipython/core/hooks.py +yap_ipython/core/__init__.py +yap_ipython/core/inputsplitter.py +yap_ipython/core/inputtransformer.py +yap_ipython/core/interactiveshell.py +yap_ipython/core/latex_symbols.py +yap_ipython/core/logger.py +yap_ipython/core/macro.py +yap_ipython/core/magic_arguments.py +yap_ipython/core/magic.py +yap_ipython/core/magics +yap_ipython/core/oinspect.py +yap_ipython/core/page.py +yap_ipython/core/payloadpage.py +yap_ipython/core/payload.py +yap_ipython/core/prefilter.py +yap_ipython/core/profileapp.py +yap_ipython/core/profiledir.py +yap_ipython/core/prompts.py +yap_ipython/core/pylabtools.py +yap_ipython/core/release.py +yap_ipython/core/shellapp.py +yap_ipython/core/splitinput.py +yap_ipython/core/tests +yap_ipython/core/ultratb.py +yap_ipython/core/usage.py +yap_ipython/extensions/autoreload.py +yap_ipython/extensions/cythonmagic.py +yap_ipython/extensions/__init__.py +yap_ipython/extensions/rmagic.py +yap_ipython/extensions/storemagic.py +yap_ipython/extensions/sympyprinting.py +yap_ipython/extensions/tests +yap_ipython/external/decorators +yap_ipython/external/__init__.py +yap_ipython/external/mathjax.py +yap_ipython/external/qt_for_kernel.py +yap_ipython/external/qt_loaders.py +yap_ipython/kernel/adapter.py +yap_ipython/kernel/channelsabc.py +yap_ipython/kernel/channels.py +yap_ipython/kernel/clientabc.py +yap_ipython/kernel/client.py +yap_ipython/kernel/connect.py +yap_ipython/kernel/__init__.py +yap_ipython/kernel/kernelspecapp.py +yap_ipython/kernel/kernelspec.py +yap_ipython/kernel/launcher.py +yap_ipython/kernel/__main__.py +yap_ipython/kernel/managerabc.py +yap_ipython/kernel/manager.py +yap_ipython/kernel/multikernelmanager.py +yap_ipython/kernel/restarter.py +yap_ipython/kernel/threaded.py +yap_ipython/lib/backgroundjobs.py +yap_ipython/lib/clipboard.py +yap_ipython/lib/deepreload.py +yap_ipython/lib/demo.py +yap_ipython/lib/display.py +yap_ipython/lib/editorhooks.py +yap_ipython/lib/guisupport.py +yap_ipython/lib/__init__.py +yap_ipython/lib/inputhookglut.py +yap_ipython/lib/inputhookgtk3.py +yap_ipython/lib/inputhookgtk.py +yap_ipython/lib/inputhook.py +yap_ipython/lib/inputhookpyglet.py +yap_ipython/lib/inputhookqt4.py +yap_ipython/lib/inputhookwx.py +yap_ipython/lib/kernel.py +yap_ipython/lib/latextools.py +yap_ipython/lib/lexers.py +yap_ipython/lib/pretty.py +yap_ipython/lib/security.py +yap_ipython/lib/tests +yap_ipython/prolog/jupyter.yap +yap_ipython/sphinxext/custom_doctests.py +yap_ipython/sphinxext/__init__.py +yap_ipython/sphinxext/ipython_console_highlighting.py +yap_ipython/sphinxext/ipython_directive.py +yap_ipython/terminal/console.py +yap_ipython/terminal/debugger.py +yap_ipython/terminal/embed.py +yap_ipython/terminal/__init__.py +yap_ipython/terminal/interactiveshell.py +yap_ipython/terminal/ipapp.py +yap_ipython/terminal/magics.py +yap_ipython/terminal/prompts.py +yap_ipython/terminal/pt_inputhooks +yap_ipython/terminal/ptshell.py +yap_ipython/terminal/ptutils.py +yap_ipython/terminal/shortcuts.py +yap_ipython/terminal/tests +yap_ipython/testing/decorators.py +yap_ipython/testing/globalipapp.py +yap_ipython/testing/__init__.py +yap_ipython/testing/iptestcontroller.py +yap_ipython/testing/iptest.py +yap_ipython/testing/ipunittest.py +yap_ipython/testing/__main__.py +yap_ipython/testing/plugin +yap_ipython/testing/skipdoctest.py +yap_ipython/testing/tests +yap_ipython/testing/tools.py +yap_ipython/utils/capture.py +yap_ipython/utils/colorable.py +yap_ipython/utils/coloransi.py +yap_ipython/utils/contexts.py +yap_ipython/utils/daemonize.py +yap_ipython/utils/data.py +yap_ipython/utils/decorators.py +yap_ipython/utils/dir2.py +yap_ipython/utils/encoding.py +yap_ipython/utils/eventful.py +yap_ipython/utils/frame.py +yap_ipython/utils/generics.py +yap_ipython/utils/importstring.py +yap_ipython/utils/__init__.py +yap_ipython/utils/io.py +yap_ipython/utils/ipstruct.py +yap_ipython/utils/jsonutil.py +yap_ipython/utils/localinterfaces.py +yap_ipython/utils/log.py +yap_ipython/utils/module_paths.py +yap_ipython/utils/openpy.py +yap_ipython/utils/path.py +yap_ipython/utils/pickleutil.py +yap_ipython/utils/_process_cli.py +yap_ipython/utils/_process_common.py +yap_ipython/utils/_process_posix.py +yap_ipython/utils/process.py +yap_ipython/utils/_process_win32_controller.py +yap_ipython/utils/_process_win32.py +yap_ipython/utils/py3compat.py +yap_ipython/utils/PyColorize.py +yap_ipython/utils/sentinel.py +yap_ipython/utils/shimmodule.py +yap_ipython/utils/signatures.py +yap_ipython/utils/strdispatch.py +yap_ipython/utils/_sysinfo.py +yap_ipython/utils/sysinfo.py +yap_ipython/utils/syspathcontext.py +yap_ipython/utils/tempdir.py +yap_ipython/utils/terminal.py +yap_ipython/utils/tests +yap_ipython/utils/text.py +yap_ipython/utils/timing.py +yap_ipython/utils/tokenize2.py +yap_ipython/utils/tokenutil.py +yap_ipython/utils/traitlets.py +yap_ipython/utils/tz.py +yap_ipython/utils/ulinecache.py +yap_ipython/utils/version.py +yap_ipython/utils/wildcard.py +yap_kernel/inprocess/tests/__init__.py +yap_kernel/inprocess/tests/test_kernelmanager.py +yap_kernel/inprocess/tests/test_kernel.py +yap_ipython/core/magics/auto.py +yap_ipython/core/magics/basic.py +yap_ipython/core/magics/code.py +yap_ipython/core/magics/config.py +yap_ipython/core/magics/display.py +yap_ipython/core/magics/execution.py +yap_ipython/core/magics/extension.py +yap_ipython/core/magics/history.py +yap_ipython/core/magics/__init__.py +yap_ipython/core/magics/logging.py +yap_ipython/core/magics/namespace.py +yap_ipython/core/magics/osm.py +yap_ipython/core/magics/pylab.py +yap_ipython/core/magics/script.py +yap_ipython/core/tests/bad_all.py +yap_ipython/core/tests/daft_extension +yap_ipython/core/tests/__init__.py +yap_ipython/core/tests/nonascii2.py +yap_ipython/core/tests/nonascii.py +yap_ipython/core/tests/print_argv.py +yap_ipython/core/tests/refbug.py +yap_ipython/core/tests/simpleerr.py +yap_ipython/core/tests/tclass.py +yap_ipython/core/tests/test_alias.py +yap_ipython/core/tests/test_application.py +yap_ipython/core/tests/test_autocall.py +yap_ipython/core/tests/test_compilerop.py +yap_ipython/core/tests/test_completerlib.py +yap_ipython/core/tests/test_completer.py +yap_ipython/core/tests/test_debugger.py +yap_ipython/core/tests/test_displayhook.py +yap_ipython/core/tests/test_display.py +yap_ipython/core/tests/test_events.py +yap_ipython/core/tests/test_extension.py +yap_ipython/core/tests/test_formatters.py +yap_ipython/core/tests/test_handlers.py +yap_ipython/core/tests/test_history.py +yap_ipython/core/tests/test_hooks.py +yap_ipython/core/tests/test_imports.py +yap_ipython/core/tests/test_inputsplitter.py +yap_ipython/core/tests/test_inputtransformer.py +yap_ipython/core/tests/test_interactiveshell.py +yap_ipython/core/tests/test_iplib.py +yap_ipython/core/tests/test_logger.py +yap_ipython/core/tests/test_magic_arguments.py +yap_ipython/core/tests/test_magic.py +yap_ipython/core/tests/test_magic_terminal.py +yap_ipython/core/tests/test_oinspect.py +yap_ipython/core/tests/test_page.py +yap_ipython/core/tests/test_paths.py +yap_ipython/core/tests/test_prefilter.py +yap_ipython/core/tests/test_profile.py +yap_ipython/core/tests/test_prompts.py +yap_ipython/core/tests/test_pylabtools.py +yap_ipython/core/tests/test_run.py +yap_ipython/core/tests/test_shellapp.py +yap_ipython/core/tests/test_splitinput.py +yap_ipython/core/tests/test_ultratb.py +yap_ipython/extensions/tests/__init__.py +yap_ipython/extensions/tests/test_autoreload.py +yap_ipython/extensions/tests/test_storemagic.py +yap_ipython/external/decorators/_decorators.py +yap_ipython/external/decorators/__init__.py +yap_ipython/external/decorators/_numpy_testing_noseclasses.py +yap_ipython/lib/tests/__init__.py +yap_ipython/lib/tests/test_backgroundjobs.py +yap_ipython/lib/tests/test_clipboard.py +yap_ipython/lib/tests/test_deepreload.py +yap_ipython/lib/tests/test_display.py +yap_ipython/lib/tests/test_editorhooks.py +yap_ipython/lib/tests/test_imports.py +yap_ipython/lib/tests/test_latextools.py +yap_ipython/lib/tests/test_lexers.py +yap_ipython/lib/tests/test_pretty.py +yap_ipython/lib/tests/test_security.py +yap_ipython/terminal/pt_inputhooks/glut.py +yap_ipython/terminal/pt_inputhooks/gtk3.py +yap_ipython/terminal/pt_inputhooks/gtk.py +yap_ipython/terminal/pt_inputhooks/__init__.py +yap_ipython/terminal/pt_inputhooks/osx.py +yap_ipython/terminal/pt_inputhooks/pyglet.py +yap_ipython/terminal/pt_inputhooks/qt.py +yap_ipython/terminal/pt_inputhooks/tk.py +yap_ipython/terminal/pt_inputhooks/wx.py +yap_ipython/terminal/tests/__init__.py +yap_ipython/terminal/tests/test_embed.py +yap_ipython/terminal/tests/test_help.py +yap_ipython/terminal/tests/test_interactivshell.py +yap_ipython/testing/plugin/dtexample.py +yap_ipython/testing/plugin/__init__.py +yap_ipython/testing/plugin/ipdoctest.py +yap_ipython/testing/plugin/iptest.py +yap_ipython/testing/plugin/setup.py +yap_ipython/testing/plugin/show_refs.py +yap_ipython/testing/plugin/simple.py +yap_ipython/testing/plugin/simplevars.py +yap_ipython/testing/plugin/test_ipdoctest.py +yap_ipython/testing/plugin/test_refs.py +yap_ipython/testing/tests/__init__.py +yap_ipython/testing/tests/test_decorators.py +yap_ipython/testing/tests/test_ipunittest.py +yap_ipython/testing/tests/test_tools.py +yap_ipython/utils/tests/__init__.py +yap_ipython/utils/tests/test_capture.py +yap_ipython/utils/tests/test_decorators.py +yap_ipython/utils/tests/test_dir2.py +yap_ipython/utils/tests/test_imports.py +yap_ipython/utils/tests/test_importstring.py +yap_ipython/utils/tests/test_io.py +yap_ipython/utils/tests/test_module_paths.py +yap_ipython/utils/tests/test_openpy.py +yap_ipython/utils/tests/test_path.py +yap_ipython/utils/tests/test_process.py +yap_ipython/utils/tests/test_pycolorize.py +yap_ipython/utils/tests/test_shimmodule.py +yap_ipython/utils/tests/test_sysinfo.py +yap_ipython/utils/tests/test_tempdir.py +yap_ipython/utils/tests/test_text.py +yap_ipython/utils/tests/test_tokenutil.py +yap_ipython/utils/tests/test_wildcard.py +yap_ipython/core/tests/daft_extension/daft_extension.py __init__.py ) @@ -375,13 +401,17 @@ __init__.py #yap_kernel/resourcess/logo-64x64.png ) set (RENAMED_RESOURCES - yap_kernel/resources/logo-32x32.png - yap_kernel/resources/logo-64x64.png - # yap_kernel/resources/codemirror/mode/prolog/prolog.js + +yap_kernel/resources/logo-32x32.png + +yap_kernel/resources/logo-64x64.png + # +yap_kernel/resources/codemirror/mode/prolog/prolog.js ) set (PL_SOURCES - yap_ipython/prolog/jupyter.yap + +yap_ipython/prolog/jupyter.yap ) set(FILES ${PYTHON_SOURCES} ${PL_SOURCES} ${EXTRAS} ${RESOURCES}) @@ -398,7 +428,8 @@ set(FILES ${PYTHON_SOURCES} ${PL_SOURCES} ${EXTRAS} ${RESOURCES}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png - COMMAND ${CMAKE_COMMAND} -E make_directory yap_kernel/resources + COMMAND ${CMAKE_COMMAND} -E make_directory +yap_kernel/resources COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/docs/icons/yap_32x32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png DEPENDS ${CMAKE_SOURCE_DIR}/docs/icons/yap_32x32x32.png ) @@ -422,9 +453,11 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo- ) add_custom_target(YAP_KERNEL ALL - COMMAND ${CMAKE_COMMAND} -E tar xzf yap.tgz + COMMAND ${CMAKE_COMMAND} -E tar xzf +yap.tgz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png yap.tgz ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/kernel.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png +yap.tgz ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/kernel.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js ) diff --git a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py index bcf280720..a3273a6b3 100644 --- a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py +++ b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py @@ -2664,22 +2664,21 @@ class InteractiveShell(SingletonConfigurable): print("go") result = None try: - import trace - tracer = trace.Trace( - #ignoredirs=[sys.prefix, sys.exec_prefix], - trace=1, - count=0) + # import trace + # tracer = trace.Trace( + # #ignoredirs=[sys.prefix, sys.exec_prefix], + # trace=1, + # count=0) - # run the new command using the given tracer - # - result =tracer.runfunc(self._yrun_cell, - raw_cell, store_history, - silent, shell_futures) + # # run the new command using the given tracer + # # + # result =tracer.runfunc(self._yrun_cell, + # raw_cell, store_history, + # silent, shell_futures) - # result = self._yrun_cell( - # raw_cell, store_history, silent, shell_futures) + result = self._yrun_cell( + raw_cell, store_history, silent, shell_futures) finally: - print("ugh", self.events) self.events.trigger('post_execute') if not silent: self.events.trigger('post_run_cell', result) diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index 73f78d015..47ef152f4 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -716,7 +716,8 @@ class YAPRun: if linec: self.shell.run_line_magic(magic, line) else: - self.shell.run_cell_magic(magic, line, cell) + print(txt0[1]) + self.shell.run_cell_magic(magic, line, txt0[1]) cell = "" # Give the displayhook a reference to our ExecutionResult so it # can fill in the output value. From 353690cc59f53e1a1a5a4053e4a3526b01d22ab5 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sun, 18 Mar 2018 14:23:24 +0000 Subject: [PATCH 05/99] gecode6 --- packages/gecode/6.0.0/gecode-version.txt | 1 + .../6.0.0/gecode_yap_auto_generated.yap | 3613 +++++++++++ .../gecode_yap_cc_forward_auto_generated.icc | 28 + .../gecode_yap_cc_impl_auto_generated.icc | 5412 +++++++++++++++++ .../gecode_yap_cc_init_auto_generated.icc | 681 +++ packages/gecode/gecode6-common.icc | 436 ++ packages/gecode/gecode6.yap | 7 + packages/gecode/gecode6_yap.cc | 2111 +++++++ packages/gecode/gecode6_yap_hand_written.yap | 1343 ++++ 9 files changed, 13632 insertions(+) create mode 100644 packages/gecode/6.0.0/gecode-version.txt create mode 100644 packages/gecode/6.0.0/gecode_yap_auto_generated.yap create mode 100644 packages/gecode/6.0.0/gecode_yap_cc_forward_auto_generated.icc create mode 100644 packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc create mode 100644 packages/gecode/6.0.0/gecode_yap_cc_init_auto_generated.icc create mode 100644 packages/gecode/gecode6-common.icc create mode 100644 packages/gecode/gecode6.yap create mode 100644 packages/gecode/gecode6_yap.cc create mode 100644 packages/gecode/gecode6_yap_hand_written.yap diff --git a/packages/gecode/6.0.0/gecode-version.txt b/packages/gecode/6.0.0/gecode-version.txt new file mode 100644 index 000000000..09b254e90 --- /dev/null +++ b/packages/gecode/6.0.0/gecode-version.txt @@ -0,0 +1 @@ +6.0.0 diff --git a/packages/gecode/6.0.0/gecode_yap_auto_generated.yap b/packages/gecode/6.0.0/gecode_yap_auto_generated.yap new file mode 100644 index 000000000..435db6a5d --- /dev/null +++ b/packages/gecode/6.0.0/gecode_yap_auto_generated.yap @@ -0,0 +1,3613 @@ +%% -*- prolog -*- +%%============================================================================= +%% Copyright (C) 2011 by Denys Duchier +%% +%% This program is free software: you can redistribute it and/or modify it +%% under the terms of the GNU Lesser General Public License as published by the +%% Free Software Foundation, either version 3 of the License, or (at your +%% option) any later version. +%% +%% This program is distributed in the hope that it will be useful, but WITHOUT +%% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +%% more details. +%% +%% You should have received a copy of the GNU Lesser General Public License +%% along with this program. If not, see . +%%============================================================================= + +is_RestartMode_('RM_NONE'). +is_RestartMode_('RM_CONSTANT'). +is_RestartMode_('RM_LINEAR'). +is_RestartMode_('RM_LUBY'). +is_RestartMode_('RM_GEOMETRIC'). + +is_RestartMode_('RM_NONE','RM_NONE'). +is_RestartMode_('RM_CONSTANT','RM_CONSTANT'). +is_RestartMode_('RM_LINEAR','RM_LINEAR'). +is_RestartMode_('RM_LUBY','RM_LUBY'). +is_RestartMode_('RM_GEOMETRIC','RM_GEOMETRIC'). + +is_RestartMode(X,Y) :- nonvar(X), is_RestartMode_(X,Y). +is_RestartMode(X) :- is_RestartMode_(X,_). + +is_FloatRelType_('FRT_EQ'). +is_FloatRelType_('FRT_NQ'). +is_FloatRelType_('FRT_LQ'). +is_FloatRelType_('FRT_LE'). +is_FloatRelType_('FRT_GQ'). +is_FloatRelType_('FRT_GR'). + +is_FloatRelType_('FRT_EQ','FRT_EQ'). +is_FloatRelType_('FRT_NQ','FRT_NQ'). +is_FloatRelType_('FRT_LQ','FRT_LQ'). +is_FloatRelType_('FRT_LE','FRT_LE'). +is_FloatRelType_('FRT_GQ','FRT_GQ'). +is_FloatRelType_('FRT_GR','FRT_GR'). + +is_FloatRelType(X,Y) :- nonvar(X), is_FloatRelType_(X,Y). +is_FloatRelType(X) :- is_FloatRelType_(X,_). + +is_ReifyMode_('RM_EQV'). +is_ReifyMode_('RM_IMP'). +is_ReifyMode_('RM_PMI'). + +is_ReifyMode_('RM_EQV','RM_EQV'). +is_ReifyMode_('RM_IMP','RM_IMP'). +is_ReifyMode_('RM_PMI','RM_PMI'). + +is_ReifyMode(X,Y) :- nonvar(X), is_ReifyMode_(X,Y). +is_ReifyMode(X) :- is_ReifyMode_(X,_). + +is_IntRelType_('IRT_EQ'). +is_IntRelType_('IRT_NQ'). +is_IntRelType_('IRT_LQ'). +is_IntRelType_('IRT_LE'). +is_IntRelType_('IRT_GQ'). +is_IntRelType_('IRT_GR'). + +is_IntRelType_('IRT_EQ','IRT_EQ'). +is_IntRelType_('IRT_NQ','IRT_NQ'). +is_IntRelType_('IRT_LQ','IRT_LQ'). +is_IntRelType_('IRT_LE','IRT_LE'). +is_IntRelType_('IRT_GQ','IRT_GQ'). +is_IntRelType_('IRT_GR','IRT_GR'). + +is_IntRelType(X,Y) :- nonvar(X), is_IntRelType_(X,Y). +is_IntRelType(X) :- is_IntRelType_(X,_). + +is_BoolOpType_('BOT_AND'). +is_BoolOpType_('BOT_OR'). +is_BoolOpType_('BOT_IMP'). +is_BoolOpType_('BOT_EQV'). +is_BoolOpType_('BOT_XOR'). + +is_BoolOpType_('BOT_AND','BOT_AND'). +is_BoolOpType_('BOT_OR','BOT_OR'). +is_BoolOpType_('BOT_IMP','BOT_IMP'). +is_BoolOpType_('BOT_EQV','BOT_EQV'). +is_BoolOpType_('BOT_XOR','BOT_XOR'). + +is_BoolOpType(X,Y) :- nonvar(X), is_BoolOpType_(X,Y). +is_BoolOpType(X) :- is_BoolOpType_(X,_). + +is_IntPropLevel_('IPL_DEF'). +is_IntPropLevel_('IPL_VAL'). +is_IntPropLevel_('IPL_BND'). +is_IntPropLevel_('IPL_DOM'). +is_IntPropLevel_('IPL_SPEED'). +is_IntPropLevel_('IPL_MEMORY'). +is_IntPropLevel_('IPL_BASIC'). +is_IntPropLevel_('IPL_ADVANCED'). +is_IntPropLevel_('IPL_BASIC_ADVANCED'). + +is_IntPropLevel_('IPL_DEF','IPL_DEF'). +is_IntPropLevel_('IPL_VAL','IPL_VAL'). +is_IntPropLevel_('IPL_BND','IPL_BND'). +is_IntPropLevel_('IPL_DOM','IPL_DOM'). +is_IntPropLevel_('IPL_SPEED','IPL_SPEED'). +is_IntPropLevel_('IPL_MEMORY','IPL_MEMORY'). +is_IntPropLevel_('IPL_BASIC','IPL_BASIC'). +is_IntPropLevel_('IPL_ADVANCED','IPL_ADVANCED'). +is_IntPropLevel_('IPL_BASIC_ADVANCED','IPL_BASIC_ADVANCED'). + +is_IntPropLevel(X,Y) :- nonvar(X), is_IntPropLevel_(X,Y). +is_IntPropLevel(X) :- is_IntPropLevel_(X,_). + +is_TaskType_('TT_FIXP'). +is_TaskType_('TT_FIXS'). +is_TaskType_('TT_FIXE'). + +is_TaskType_('TT_FIXP','TT_FIXP'). +is_TaskType_('TT_FIXS','TT_FIXS'). +is_TaskType_('TT_FIXE','TT_FIXE'). + +is_TaskType(X,Y) :- nonvar(X), is_TaskType_(X,Y). +is_TaskType(X) :- is_TaskType_(X,_). + +is_TraceEvent_('TE_INIT'). +is_TraceEvent_('TE_PRUNE'). +is_TraceEvent_('TE_FIX'). +is_TraceEvent_('TE_FAIL'). +is_TraceEvent_('TE_DONE'). +is_TraceEvent_('TE_PROPAGATE'). +is_TraceEvent_('TE_COMMIT'). + +is_TraceEvent_('TE_INIT','TE_INIT'). +is_TraceEvent_('TE_PRUNE','TE_PRUNE'). +is_TraceEvent_('TE_FIX','TE_FIX'). +is_TraceEvent_('TE_FAIL','TE_FAIL'). +is_TraceEvent_('TE_DONE','TE_DONE'). +is_TraceEvent_('TE_PROPAGATE','TE_PROPAGATE'). +is_TraceEvent_('TE_COMMIT','TE_COMMIT'). + +is_TraceEvent(X,Y) :- nonvar(X), is_TraceEvent_(X,Y). +is_TraceEvent(X) :- is_TraceEvent_(X,_). + +is_SetRelType_('SRT_EQ'). +is_SetRelType_('SRT_NQ'). +is_SetRelType_('SRT_SUB'). +is_SetRelType_('SRT_SUP'). +is_SetRelType_('SRT_DISJ'). +is_SetRelType_('SRT_CMPL'). +is_SetRelType_('SRT_LQ'). +is_SetRelType_('SRT_LE'). +is_SetRelType_('SRT_GQ'). +is_SetRelType_('SRT_GR'). + +is_SetRelType_('SRT_EQ','SRT_EQ'). +is_SetRelType_('SRT_NQ','SRT_NQ'). +is_SetRelType_('SRT_SUB','SRT_SUB'). +is_SetRelType_('SRT_SUP','SRT_SUP'). +is_SetRelType_('SRT_DISJ','SRT_DISJ'). +is_SetRelType_('SRT_CMPL','SRT_CMPL'). +is_SetRelType_('SRT_LQ','SRT_LQ'). +is_SetRelType_('SRT_LE','SRT_LE'). +is_SetRelType_('SRT_GQ','SRT_GQ'). +is_SetRelType_('SRT_GR','SRT_GR'). + +is_SetRelType(X,Y) :- nonvar(X), is_SetRelType_(X,Y). +is_SetRelType(X) :- is_SetRelType_(X,_). + +is_SetOpType_('SOT_UNION'). +is_SetOpType_('SOT_DUNION'). +is_SetOpType_('SOT_INTER'). +is_SetOpType_('SOT_MINUS'). + +is_SetOpType_('SOT_UNION','SOT_UNION'). +is_SetOpType_('SOT_DUNION','SOT_DUNION'). +is_SetOpType_('SOT_INTER','SOT_INTER'). +is_SetOpType_('SOT_MINUS','SOT_MINUS'). + +is_SetOpType(X,Y) :- nonvar(X), is_SetOpType_(X,Y). +is_SetOpType(X) :- is_SetOpType_(X,_). + +branch(X0,X1) :- + (is_Space_or_Clause(X0,Y0) + -> (is_std_function(X1,Y1) + -> gecode_constraint_branch_1(Y0,Y1) + ; throw(error(type_error('std::function'(X1)),gecode_argument_error(branch(X0,X1),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1),arg=1)))). + +convex(X0,X1) :- + (is_Space_or_Clause(X0,Y0) + -> (is_SetVar(X1,Y1) + -> gecode_constraint_convex_2(Y0,Y1) + ; throw(error(type_error('SetVar'(X1)),gecode_argument_error(convex(X0,X1),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(convex(X0,X1),arg=1)))). + +convex(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_SetVar(X1,Y1) + -> (is_SetVar(X2,Y2) + -> gecode_constraint_convex_3(Y0,Y1,Y2) + ; throw(error(type_error('SetVar'(X2)),gecode_argument_error(convex(X0,X1,X2),arg=3)))) + ; throw(error(type_error('SetVar'(X1)),gecode_argument_error(convex(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(convex(X0,X1,X2),arg=1)))). + +abs(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> gecode_constraint_abs_4(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(abs(X0,X1,X2),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_abs_5(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(abs(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(abs(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(abs(X0,X1,X2),arg=1)))). + +abs(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_abs_6(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(abs(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(abs(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(abs(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(abs(X0,X1,X2,X3),arg=1)))). + +argmax(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_argmax_7(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(argmax(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmax(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmax(X0,X1,X2),arg=1)))). + +argmax(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_bool(X3,Y3) + -> gecode_constraint_argmax_8(Y0,Y1,Y2,Y3) + ; throw(error(type_error(bool(X3)),gecode_argument_error(argmax(X0,X1,X2,X3),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_argmax_10(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmax(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmax(X0,X1,X2,X3),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmax(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmax(X0,X1,X2,X3),arg=1)))). + +argmax(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_bool(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_argmax_9(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(bool(X3)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_bool(X4,Y4) + -> gecode_constraint_argmax_11(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(bool(X4)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmax(X0,X1,X2,X3,X4),arg=1)))). + +argmax(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_bool(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_argmax_12(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(bool(X4)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmax(X0,X1,X2,X3,X4,X5),arg=1)))). + +argmin(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_argmin_13(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(argmin(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmin(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmin(X0,X1,X2),arg=1)))). + +argmin(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_bool(X3,Y3) + -> gecode_constraint_argmin_14(Y0,Y1,Y2,Y3) + ; throw(error(type_error(bool(X3)),gecode_argument_error(argmin(X0,X1,X2,X3),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_argmin_16(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmin(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmin(X0,X1,X2,X3),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmin(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmin(X0,X1,X2,X3),arg=1)))). + +argmin(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_bool(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_argmin_15(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(bool(X3)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_bool(X4,Y4) + -> gecode_constraint_argmin_17(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(bool(X4)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmin(X0,X1,X2,X3,X4),arg=1)))). + +argmin(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_bool(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_argmin_18(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(bool(X4)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(argmin(X0,X1,X2,X3,X4,X5),arg=1)))). + +assign(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolAssign(X2,Y2) + -> gecode_constraint_assign_19(Y0,Y1,Y2) + ; throw(error(type_error('BoolAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatAssign(X2,Y2) + -> gecode_constraint_assign_21(Y0,Y1,Y2) + ; throw(error(type_error('FloatAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntAssign(X2,Y2) + -> gecode_constraint_assign_23(Y0,Y1,Y2) + ; throw(error(type_error('IntAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_SetVar(X1,Y1) + -> (is_SetAssign(X2,Y2) + -> gecode_constraint_assign_25(Y0,Y1,Y2) + ; throw(error(type_error('SetAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_BoolAssign(X2,Y2) + -> gecode_constraint_assign_27(Y0,Y1,Y2) + ; throw(error(type_error('BoolAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatAssign(X2,Y2) + -> gecode_constraint_assign_30(Y0,Y1,Y2) + ; throw(error(type_error('FloatAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntAssign(X2,Y2) + -> gecode_constraint_assign_33(Y0,Y1,Y2) + ; throw(error(type_error('IntAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetAssign(X2,Y2) + -> gecode_constraint_assign_36(Y0,Y1,Y2) + ; throw(error(type_error('SetAssign'(X2)),gecode_argument_error(assign(X0,X1,X2),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(assign(X0,X1,X2),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(assign(X0,X1,X2),arg=1)))). + +assign(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolAssign(X2,Y2) + -> (is_BoolVarValPrint(X3,Y3) + -> gecode_constraint_assign_20(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolVarValPrint'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('BoolAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatAssign(X2,Y2) + -> (is_FloatVarValPrint(X3,Y3) + -> gecode_constraint_assign_22(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVarValPrint'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntAssign(X2,Y2) + -> (is_IntVarValPrint(X3,Y3) + -> gecode_constraint_assign_24(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVarValPrint'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_SetVar(X1,Y1) + -> (is_SetAssign(X2,Y2) + -> (is_SetVarValPrint(X3,Y3) + -> gecode_constraint_assign_26(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetVarValPrint'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('SetAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_BoolAssign(X2,Y2) + -> (is_BoolBranchFilter(X3,Y3) + -> gecode_constraint_assign_28(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('BoolAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatAssign(X2,Y2) + -> (is_FloatBranchFilter(X3,Y3) + -> gecode_constraint_assign_31(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntAssign(X2,Y2) + -> (is_IntBranchFilter(X3,Y3) + -> gecode_constraint_assign_34(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetAssign(X2,Y2) + -> (is_SetBranchFilter(X3,Y3) + -> gecode_constraint_assign_37(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('SetAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(assign(X0,X1,X2,X3),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(assign(X0,X1,X2,X3),arg=1)))). + +assign(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolAssign(X2,Y2) + -> (is_BoolBranchFilter(X3,Y3) + -> (is_BoolVarValPrint(X4,Y4) + -> gecode_constraint_assign_29(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('BoolVarValPrint'(X4)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('BoolBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('BoolAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatAssign(X2,Y2) + -> (is_FloatBranchFilter(X3,Y3) + -> (is_FloatVarValPrint(X4,Y4) + -> gecode_constraint_assign_32(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('FloatVarValPrint'(X4)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('FloatAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntAssign(X2,Y2) + -> (is_IntBranchFilter(X3,Y3) + -> (is_IntVarValPrint(X4,Y4) + -> gecode_constraint_assign_35(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVarValPrint'(X4)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=3)))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetAssign(X2,Y2) + -> (is_SetBranchFilter(X3,Y3) + -> (is_SetVarValPrint(X4,Y4) + -> gecode_constraint_assign_38(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('SetVarValPrint'(X4)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('SetBranchFilter'(X3)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('SetAssign'(X2)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(assign(X0,X1,X2,X3,X4),arg=1)))). + +binpacking(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> gecode_constraint_binpacking_39(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(binpacking(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(binpacking(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(binpacking(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(binpacking(X0,X1,X2,X3),arg=1)))). + +binpacking(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_binpacking_40(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(binpacking(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(binpacking(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(binpacking(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(binpacking(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(binpacking(X0,X1,X2,X3,X4),arg=1)))). + +branch(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolValBranch(X2,Y2) + -> gecode_constraint_branch_41(Y0,Y1,Y2) + ; throw(error(type_error('BoolValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatValBranch(X2,Y2) + -> gecode_constraint_branch_43(Y0,Y1,Y2) + ; throw(error(type_error('FloatValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntValBranch(X2,Y2) + -> gecode_constraint_branch_45(Y0,Y1,Y2) + ; throw(error(type_error('IntValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2),arg=3)))) + ; (is_SetVar(X1,Y1) + -> (is_SetValBranch(X2,Y2) + -> gecode_constraint_branch_47(Y0,Y1,Y2) + ; throw(error(type_error('SetValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2),arg=3)))) + ; throw(error(type_error('SetVar'(X1)),gecode_argument_error(branch(X0,X1,X2),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1,X2),arg=1)))). + +branch(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolValBranch(X2,Y2) + -> (is_BoolVarValPrint(X3,Y3) + -> gecode_constraint_branch_42(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolVarValPrint'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('BoolValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatValBranch(X2,Y2) + -> (is_FloatVarValPrint(X3,Y3) + -> gecode_constraint_branch_44(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVarValPrint'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntValBranch(X2,Y2) + -> (is_IntVarValPrint(X3,Y3) + -> gecode_constraint_branch_46(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVarValPrint'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3)))) + ; (is_SetVar(X1,Y1) + -> (is_SetValBranch(X2,Y2) + -> (is_SetVarValPrint(X3,Y3) + -> gecode_constraint_branch_48(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetVarValPrint'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('SetValBranch'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> gecode_constraint_branch_49(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> gecode_constraint_branch_55(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3))))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> gecode_constraint_branch_61(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> gecode_constraint_branch_64(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> gecode_constraint_branch_67(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> gecode_constraint_branch_73(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> gecode_constraint_branch_79(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> gecode_constraint_branch_85(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3),arg=3))))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(branch(X0,X1,X2,X3),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1,X2,X3),arg=1)))). + +branch(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_BoolBranchFilter(X4,Y4) + -> gecode_constraint_branch_50(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_52(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_BoolBranchFilter(X4,Y4) + -> gecode_constraint_branch_56(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_58(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=3))))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> (is_FloatBranchFilter(X4,Y4) + -> gecode_constraint_branch_62(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('FloatBranchFilter'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> (is_FloatBranchFilter(X4,Y4) + -> gecode_constraint_branch_65(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('FloatBranchFilter'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_IntBranchFilter(X4,Y4) + -> gecode_constraint_branch_68(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_70(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_IntBranchFilter(X4,Y4) + -> gecode_constraint_branch_74(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_76(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=3))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_SetBranchFilter(X4,Y4) + -> gecode_constraint_branch_80(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_82(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_SetBranchFilter(X4,Y4) + -> gecode_constraint_branch_86(Y0,Y1,Y2,Y3,Y4) + ; (is_Symmetries(X4,Y4) + -> gecode_constraint_branch_88(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=3))))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1,X2,X3,X4),arg=1)))). + +branch(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_BoolBranchFilter(X4,Y4) + -> (is_BoolVarValPrint(X5,Y5) + -> gecode_constraint_branch_51(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_BoolBranchFilter(X5,Y5) + -> gecode_constraint_branch_53(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_BoolBranchFilter(X4,Y4) + -> (is_BoolVarValPrint(X5,Y5) + -> gecode_constraint_branch_57(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_BoolBranchFilter(X5,Y5) + -> gecode_constraint_branch_59(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> (is_FloatBranchFilter(X4,Y4) + -> (is_FloatVarValPrint(X5,Y5) + -> gecode_constraint_branch_63(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('FloatVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('FloatBranchFilter'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_FloatVarBranch(X2,Y2) + -> (is_FloatValBranch(X3,Y3) + -> (is_FloatBranchFilter(X4,Y4) + -> (is_FloatVarValPrint(X5,Y5) + -> gecode_constraint_branch_66(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('FloatVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('FloatBranchFilter'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('FloatValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_IntBranchFilter(X4,Y4) + -> (is_IntVarValPrint(X5,Y5) + -> gecode_constraint_branch_69(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_IntBranchFilter(X5,Y5) + -> gecode_constraint_branch_71(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_IntBranchFilter(X4,Y4) + -> (is_IntVarValPrint(X5,Y5) + -> gecode_constraint_branch_75(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_IntBranchFilter(X5,Y5) + -> gecode_constraint_branch_77(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_SetBranchFilter(X4,Y4) + -> (is_SetVarValPrint(X5,Y5) + -> gecode_constraint_branch_81(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('SetVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_SetBranchFilter(X5,Y5) + -> gecode_constraint_branch_83(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('SetBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_SetBranchFilter(X4,Y4) + -> (is_SetVarValPrint(X5,Y5) + -> gecode_constraint_branch_87(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('SetVarValPrint'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_Symmetries(X4,Y4) + -> (is_SetBranchFilter(X5,Y5) + -> gecode_constraint_branch_89(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('SetBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=3))))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5),arg=1)))). + +branch(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_BoolBranchFilter(X5,Y5) + -> (is_BoolVarValPrint(X6,Y6) + -> gecode_constraint_branch_54(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('BoolBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_BoolVarBranch(X2,Y2) + -> (is_BoolValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_BoolBranchFilter(X5,Y5) + -> (is_BoolVarValPrint(X6,Y6) + -> gecode_constraint_branch_60(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('BoolBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('BoolValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_IntBranchFilter(X5,Y5) + -> (is_IntVarValPrint(X6,Y6) + -> gecode_constraint_branch_72(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_IntVarBranch(X2,Y2) + -> (is_IntValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_IntBranchFilter(X5,Y5) + -> (is_IntVarValPrint(X6,Y6) + -> gecode_constraint_branch_78(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_SetBranchFilter(X5,Y5) + -> (is_SetVarValPrint(X6,Y6) + -> gecode_constraint_branch_84(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('SetVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('SetBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_SetVarBranch(X2,Y2) + -> (is_SetValBranch(X3,Y3) + -> (is_Symmetries(X4,Y4) + -> (is_SetBranchFilter(X5,Y5) + -> (is_SetVarValPrint(X6,Y6) + -> gecode_constraint_branch_90(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('SetVarValPrint'(X6)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('SetBranchFilter'(X5)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('Symmetries'(X4)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('SetValBranch'(X3)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('TieBreak'(X2)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(branch(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +cardinality(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_SetVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> gecode_constraint_cardinality_91(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=3)))) + ; (is_SetVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> gecode_constraint_cardinality_92(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cardinality(X0,X1,X2,X3),arg=1)))). + +channel(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_channel_93(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> gecode_constraint_channel_95(Y0,Y1,Y2) + ; (is_IntVar(X2,Y2) + -> gecode_constraint_channel_96(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2),arg=3))))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_channel_97(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> gecode_constraint_channel_100(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(channel(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(channel(X0,X1,X2),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(channel(X0,X1,X2),arg=1)))). + +channel(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_channel_94(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(channel(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> gecode_constraint_channel_98(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(channel(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_channel_101(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(channel(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(channel(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(channel(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(channel(X0,X1,X2,X3),arg=1)))). + +channel(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_channel_99(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_int(X4,Y4) + -> gecode_constraint_channel_102(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(channel(X0,X1,X2,X3,X4),arg=1)))). + +channel(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_channel_103(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(channel(X0,X1,X2,X3,X4,X5),arg=1)))). + +circuit(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_circuit_104(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=3)))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_circuit_115(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error(int(X1)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1,X2,X3),arg=1)))). + +circuit(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_circuit_105(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_circuit_106(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=4))))) + ; (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_circuit_108(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=3))))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1,X2,X3,X4),arg=1)))). + +circuit(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_circuit_107(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_circuit_109(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_IntVarArgs(X4,Y4) + -> (is_IntVar(X5,Y5) + -> gecode_constraint_circuit_110(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=3))))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5),arg=1)))). + +circuit(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntVar(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_circuit_111(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +circuit(X0,X1) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> gecode_constraint_circuit_112(Y0,Y1) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(circuit(X0,X1),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1),arg=1)))). + +circuit(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntPropLevel(X2,Y2) + -> gecode_constraint_circuit_113(Y0,Y1,Y2) + ; throw(error(type_error('IntPropLevel'(X2)),gecode_argument_error(circuit(X0,X1,X2),arg=3)))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> gecode_constraint_circuit_114(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(circuit(X0,X1,X2),arg=3)))) + ; throw(error(type_error(int(X1)),gecode_argument_error(circuit(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(circuit(X0,X1,X2),arg=1)))). + +clause(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolOpType(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_BoolVarArgs(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> gecode_constraint_clause_116(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_clause_118(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(clause(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('BoolVarArgs'(X3)),gecode_argument_error(clause(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(clause(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('BoolOpType'(X1)),gecode_argument_error(clause(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(clause(X0,X1,X2,X3,X4),arg=1)))). + +clause(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolOpType(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_BoolVarArgs(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_clause_117(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_clause_119(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('BoolVarArgs'(X3)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('BoolOpType'(X1)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(clause(X0,X1,X2,X3,X4,X5),arg=1)))). + +count(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_count_120(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_count_122(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_count_124(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_count_126(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntSet(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_count_128(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_count_130(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5))))) + ; (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_count_133(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4))))) + ; (is_IntSetArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_count_137(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_count_141(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_count_142(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_count_144(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=3))))))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(count(X0,X1,X2,X3,X4),arg=1)))). + +count(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_121(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_123(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_125(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_127(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntSet(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_129(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_131(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_143(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_count_145(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=3))))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(count(X0,X1,X2,X3,X4,X5),arg=1)))). + +count(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> gecode_constraint_count_132(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3),arg=4)))) + ; (is_IntSetArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_count_135(Y0,Y1,Y2,Y3) + ; (is_IntArgs(X3,Y3) + -> gecode_constraint_count_136(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3),arg=4))))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_count_139(Y0,Y1,Y2,Y3) + ; (is_IntArgs(X3,Y3) + -> gecode_constraint_count_140(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(count(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(count(X0,X1,X2,X3),arg=3)))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(count(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(count(X0,X1,X2,X3),arg=1)))). + +count(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntSetArgs(X2,Y2) + -> gecode_constraint_count_134(Y0,Y1,Y2) + ; (is_IntVarArgs(X2,Y2) + -> gecode_constraint_count_138(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(count(X0,X1,X2),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(count(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(count(X0,X1,X2),arg=1)))). + +cumulative(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> gecode_constraint_cumulative_146(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=3)))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> gecode_constraint_cumulative_158(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error(int(X1)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4),arg=1)))). + +cumulative(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_cumulative_147(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_BoolVarArgs(X5,Y5) + -> gecode_constraint_cumulative_148(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6))))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> gecode_constraint_cumulative_150(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=4))))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> gecode_constraint_cumulative_154(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_cumulative_159(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_BoolVarArgs(X5,Y5) + -> gecode_constraint_cumulative_160(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6))))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> gecode_constraint_cumulative_162(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=4))))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> gecode_constraint_cumulative_166(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=3))))) + ; throw(error(type_error(int(X1)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5),arg=1)))). + +cumulative(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_BoolVarArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_149(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_151(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; (is_BoolVarArgs(X6,Y6) + -> gecode_constraint_cumulative_152(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7))))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=4))))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_155(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; (is_BoolVarArgs(X6,Y6) + -> gecode_constraint_cumulative_156(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7))))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_BoolVarArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_161(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_163(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; (is_BoolVarArgs(X6,Y6) + -> gecode_constraint_cumulative_164(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7))))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=4))))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_cumulative_167(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; (is_BoolVarArgs(X6,Y6) + -> gecode_constraint_cumulative_168(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=7))))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; throw(error(type_error(int(X1)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +cumulative(X0,X1,X2,X3,X4,X5,X6,X7) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_BoolVarArgs(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_cumulative_153(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_BoolVarArgs(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_cumulative_157(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=3))))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_BoolVarArgs(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_cumulative_165(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; (is_TaskTypeArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_BoolVarArgs(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_cumulative_169(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('BoolVarArgs'(X6)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntArgs'(X5)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('TaskTypeArgs'(X2)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=3))))) + ; throw(error(type_error(int(X1)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulative(X0,X1,X2,X3,X4,X5,X6,X7),arg=1)))). + +cumulatives(X0,X1,X2,X3,X4,X5,X6,X7) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_170(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_172(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_174(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_176(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_178(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_180(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_182(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> gecode_constraint_cumulatives_184(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7),arg=1)))). + +cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_171(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_173(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_175(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_177(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_179(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_181(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_183(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntArgs(X6,Y6) + -> (is_bool(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_cumulatives_185(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error(bool(X7)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntArgs'(X6)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6))))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(cumulatives(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=1)))). + +distinct(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> gecode_constraint_distinct_186(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(distinct(X0,X1,X2),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> gecode_constraint_distinct_188(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(distinct(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntPropLevel(X2,Y2) + -> gecode_constraint_distinct_191(Y0,Y1,Y2) + ; (is_int(X2,Y2) + -> gecode_constraint_distinct_192(Y0,Y1,Y2) + ; throw(error(type_error(int(X2)),gecode_argument_error(distinct(X0,X1,X2),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(distinct(X0,X1,X2),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(distinct(X0,X1,X2),arg=1)))). + +distinct(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_distinct_187(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_distinct_189(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_distinct_193(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(distinct(X0,X1,X2,X3),arg=1)))). + +distinct(X0,X1) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> gecode_constraint_distinct_190(Y0,Y1) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(distinct(X0,X1),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(distinct(X0,X1),arg=1)))). + +div(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_div_194(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(div(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(div(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_div_195(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(div(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(div(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(div(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(div(X0,X1,X2,X3),arg=1)))). + +div(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_div_196(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(div(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(div(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(div(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(div(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(div(X0,X1,X2,X3,X4),arg=1)))). + +divmod(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_divmod_197(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(divmod(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(divmod(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(divmod(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(divmod(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(divmod(X0,X1,X2,X3,X4),arg=1)))). + +divmod(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_divmod_198(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(divmod(X0,X1,X2,X3,X4,X5),arg=1)))). + +dom(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> gecode_constraint_dom_199(Y0,Y1,Y2) + ; throw(error(type_error('BoolVar'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatVal(X2,Y2) + -> gecode_constraint_dom_203(Y0,Y1,Y2) + ; (is_FloatVar(X2,Y2) + -> gecode_constraint_dom_205(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3))))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_dom_206(Y0,Y1,Y2) + ; (is_IntSet(X2,Y2) + -> gecode_constraint_dom_208(Y0,Y1,Y2) + ; (is_int(X2,Y2) + -> gecode_constraint_dom_212(Y0,Y1,Y2) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))))) + ; (is_SetVar(X1,Y1) + -> (is_SetVar(X2,Y2) + -> gecode_constraint_dom_226(Y0,Y1,Y2) + ; throw(error(type_error('SetVar'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> gecode_constraint_dom_227(Y0,Y1,Y2) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatVal(X2,Y2) + -> gecode_constraint_dom_230(Y0,Y1,Y2) + ; (is_FloatVarArgs(X2,Y2) + -> gecode_constraint_dom_231(Y0,Y1,Y2) + ; throw(error(type_error('FloatVarArgs'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> gecode_constraint_dom_232(Y0,Y1,Y2) + ; (is_IntVarArgs(X2,Y2) + -> gecode_constraint_dom_234(Y0,Y1,Y2) + ; (is_int(X2,Y2) + -> gecode_constraint_dom_236(Y0,Y1,Y2) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetVarArgs(X2,Y2) + -> gecode_constraint_dom_243(Y0,Y1,Y2) + ; throw(error(type_error('SetVarArgs'(X2)),gecode_argument_error(dom(X0,X1,X2),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(dom(X0,X1,X2),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(dom(X0,X1,X2),arg=1)))). + +dom(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_200(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('BoolVar'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatNum(X2,Y2) + -> (is_FloatNum(X3,Y3) + -> gecode_constraint_dom_201(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatNum'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; (is_FloatVal(X2,Y2) + -> (is_Reify(X3,Y3) + -> gecode_constraint_dom_204(Y0,Y1,Y2,Y3) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatVal'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3))))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_207(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; (is_IntSet(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_209(Y0,Y1,Y2,Y3) + ; (is_Reify(X3,Y3) + -> gecode_constraint_dom_210(Y0,Y1,Y2,Y3) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4))))) + ; (is_int(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_213(Y0,Y1,Y2,Y3) + ; (is_Reify(X3,Y3) + -> gecode_constraint_dom_214(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_dom_216(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))))) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))))) + ; (is_SetVar(X1,Y1) + -> (is_SetRelType(X2,Y2) + -> (is_IntSet(X3,Y3) + -> gecode_constraint_dom_220(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_dom_222(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_228(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatNum(X2,Y2) + -> (is_FloatNum(X3,Y3) + -> gecode_constraint_dom_229(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatNum'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatNum'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_233(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_235(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_dom_237(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_dom_238(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetRelType(X2,Y2) + -> (is_IntSet(X3,Y3) + -> gecode_constraint_dom_240(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_dom_241(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(dom(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(dom(X0,X1,X2,X3),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(dom(X0,X1,X2,X3),arg=1)))). + +dom(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatNum(X2,Y2) + -> (is_FloatNum(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_dom_202(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatNum'(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('FloatNum'(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_Reify(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_dom_211(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4)))) + ; (is_int(X2,Y2) + -> (is_Reify(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_dom_215(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_dom_217(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_dom_218(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=3))))) + ; (is_SetVar(X1,Y1) + -> (is_SetRelType(X2,Y2) + -> (is_IntSet(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_dom_221(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_dom_223(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_dom_224(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_dom_239(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=3)))) + ; (is_SetVarArgs(X1,Y1) + -> (is_SetRelType(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> gecode_constraint_dom_242(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=2)))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(dom(X0,X1,X2,X3,X4),arg=1)))). + +dom(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_dom_219(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_SetVar(X1,Y1) + -> (is_SetRelType(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> (is_Reify(X5,Y5) + -> gecode_constraint_dom_225(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('SetVar'(X1)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(dom(X0,X1,X2,X3,X4,X5),arg=1)))). + +element(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> gecode_constraint_element_244(Y0,Y1,Y2,Y3) + ; (is_IntVar(X3,Y3) + -> gecode_constraint_element_246(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_element_248(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3),arg=4)))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> gecode_constraint_element_254(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_element_256(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_element_260(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_element_262(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(element(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(element(X0,X1,X2,X3),arg=1)))). + +element(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_245(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_247(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_249(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=4)))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_255(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_257(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_261(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_element_263(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(element(X0,X1,X2,X3,X4),arg=1)))). + +element(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_BoolVar(X6,Y6) + -> gecode_constraint_element_250(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; (is_IntVar(X6,Y6) + -> gecode_constraint_element_252(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=7))))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_BoolVar(X6,Y6) + -> gecode_constraint_element_258(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('BoolVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_IntVar(X6,Y6) + -> gecode_constraint_element_264(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +element(X0,X1,X2,X3,X4,X5,X6,X7) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_BoolVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_element_251(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; (is_IntVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_element_253(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=7))))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_BoolVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_element_259(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('BoolVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_int(X5,Y5) + -> (is_IntVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_element_265(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(element(X0,X1,X2,X3,X4,X5,X6,X7),arg=1)))). + +extensional(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_DFA(X2,Y2) + -> gecode_constraint_extensional_266(Y0,Y1,Y2) + ; (is_TupleSet(X2,Y2) + -> gecode_constraint_extensional_268(Y0,Y1,Y2) + ; throw(error(type_error('TupleSet'(X2)),gecode_argument_error(extensional(X0,X1,X2),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_DFA(X2,Y2) + -> gecode_constraint_extensional_270(Y0,Y1,Y2) + ; (is_TupleSet(X2,Y2) + -> gecode_constraint_extensional_272(Y0,Y1,Y2) + ; throw(error(type_error('TupleSet'(X2)),gecode_argument_error(extensional(X0,X1,X2),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(extensional(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(extensional(X0,X1,X2),arg=1)))). + +extensional(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_DFA(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_extensional_267(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=4)))) + ; (is_TupleSet(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_extensional_269(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TupleSet'(X2)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_DFA(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_extensional_271(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=4)))) + ; (is_TupleSet(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_extensional_273(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('TupleSet'(X2)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(extensional(X0,X1,X2,X3),arg=1)))). + +ite(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> gecode_constraint_ite_274(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('BoolVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('BoolVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=4)))) + ; (is_FloatVar(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> (is_FloatVar(X4,Y4) + -> gecode_constraint_ite_276(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('FloatVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_ite_277(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=4)))) + ; (is_SetVar(X2,Y2) + -> (is_SetVar(X3,Y3) + -> (is_SetVar(X4,Y4) + -> gecode_constraint_ite_279(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('SetVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('SetVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('SetVar'(X2)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=3))))))) + ; throw(error(type_error('BoolVar'(X1)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(ite(X0,X1,X2,X3,X4),arg=1)))). + +ite(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_ite_275(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('BoolVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('BoolVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_ite_278(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=3))))) + ; throw(error(type_error('BoolVar'(X1)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(ite(X0,X1,X2,X3,X4,X5),arg=1)))). + +linear(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_linear_280(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_linear_284(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatRelType(X2,Y2) + -> (is_FloatVal(X3,Y3) + -> gecode_constraint_linear_292(Y0,Y1,Y2,Y3) + ; (is_FloatVar(X3,Y3) + -> gecode_constraint_linear_294(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(linear(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('FloatRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_linear_312(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_linear_316(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(linear(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(linear(X0,X1,X2,X3),arg=1)))). + +linear(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_linear_281(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_linear_282(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_linear_285(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_linear_286(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=3)))) + ; (is_FloatValArgs(X1,Y1) + -> (is_FloatVarArgs(X2,Y2) + -> (is_FloatRelType(X3,Y3) + -> (is_FloatVal(X4,Y4) + -> gecode_constraint_linear_288(Y0,Y1,Y2,Y3,Y4) + ; (is_FloatVar(X4,Y4) + -> gecode_constraint_linear_290(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('FloatVar'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('FloatRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('FloatVarArgs'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatRelType(X2,Y2) + -> (is_FloatVal(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_linear_293(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5)))) + ; (is_FloatVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_linear_295(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('FloatRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_linear_296(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_linear_300(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_linear_304(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_linear_308(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_linear_313(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_linear_314(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_linear_317(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_linear_318(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=2)))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(linear(X0,X1,X2,X3,X4),arg=1)))). + +linear(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_283(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_287(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_FloatValArgs(X1,Y1) + -> (is_FloatVarArgs(X2,Y2) + -> (is_FloatRelType(X3,Y3) + -> (is_FloatVal(X4,Y4) + -> (is_Reify(X5,Y5) + -> gecode_constraint_linear_289(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_FloatVar(X4,Y4) + -> (is_Reify(X5,Y5) + -> gecode_constraint_linear_291(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('FloatVar'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('FloatRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('FloatVarArgs'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_297(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_Reify(X5,Y5) + -> gecode_constraint_linear_298(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6))))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_301(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_Reify(X5,Y5) + -> gecode_constraint_linear_302(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6))))) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_305(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_Reify(X5,Y5) + -> gecode_constraint_linear_306(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6))))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_309(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_Reify(X5,Y5) + -> gecode_constraint_linear_310(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6))))) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_315(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_linear_319(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=2))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5),arg=1)))). + +linear(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_Reify(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_linear_299(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; (is_int(X4,Y4) + -> (is_Reify(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_linear_303(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntRelType(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_Reify(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_linear_307(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; (is_int(X4,Y4) + -> (is_Reify(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_linear_311(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('Reify'(X5)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=5))))) + ; throw(error(type_error('IntRelType'(X3)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(linear(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +max(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_max_320(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(max(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(max(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_max_321(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(max(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(max(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_max_325(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(max(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(max(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(max(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(max(X0,X1,X2,X3),arg=1)))). + +max(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_max_322(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(max(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(max(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(max(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(max(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(max(X0,X1,X2,X3,X4),arg=1)))). + +max(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVarArgs(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> gecode_constraint_max_323(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(max(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_max_324(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(max(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(max(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(max(X0,X1,X2),arg=1)))). + +member(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> gecode_constraint_member_326(Y0,Y1,Y2) + ; throw(error(type_error('BoolVar'(X2)),gecode_argument_error(member(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_member_330(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(member(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(member(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(member(X0,X1,X2),arg=1)))). + +member(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_member_327(Y0,Y1,Y2,Y3) + ; (is_Reify(X3,Y3) + -> gecode_constraint_member_328(Y0,Y1,Y2,Y3) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(member(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('BoolVar'(X2)),gecode_argument_error(member(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_member_331(Y0,Y1,Y2,Y3) + ; (is_Reify(X3,Y3) + -> gecode_constraint_member_332(Y0,Y1,Y2,Y3) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(member(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(member(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(member(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(member(X0,X1,X2,X3),arg=1)))). + +member(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_BoolVar(X2,Y2) + -> (is_Reify(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_member_329(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('BoolVar'(X2)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_Reify(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_member_333(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('Reify'(X3)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(member(X0,X1,X2,X3,X4),arg=1)))). + +min(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_min_334(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(min(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(min(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_min_335(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(min(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(min(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_min_339(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(min(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(min(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(min(X0,X1,X2,X3),arg=2)))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(min(X0,X1,X2,X3),arg=1)))). + +min(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_min_336(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(min(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(min(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(min(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(min(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(min(X0,X1,X2,X3,X4),arg=1)))). + +min(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVarArgs(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> gecode_constraint_min_337(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(min(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_min_338(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(min(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(min(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(min(X0,X1,X2),arg=1)))). + +mod(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_mod_340(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(mod(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(mod(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(mod(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(mod(X0,X1,X2,X3),arg=1)))). + +mod(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_mod_341(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(mod(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(mod(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(mod(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(mod(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(mod(X0,X1,X2,X3,X4),arg=1)))). + +mult(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_mult_342(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(mult(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(mult(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_mult_343(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(mult(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(mult(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(mult(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(mult(X0,X1,X2,X3),arg=1)))). + +mult(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_mult_344(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(mult(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(mult(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(mult(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(mult(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(mult(X0,X1,X2,X3,X4),arg=1)))). + +nooverlap(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> gecode_constraint_nooverlap_345(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntArgs'(X2)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4),arg=1)))). + +nooverlap(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_nooverlap_346(Y0,Y1,Y2,Y3,Y4,Y5) + ; (is_BoolVarArgs(X5,Y5) + -> gecode_constraint_nooverlap_347(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=6))))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntArgs'(X2)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5),arg=1)))). + +nooverlap(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntArgs(X4,Y4) + -> (is_BoolVarArgs(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_nooverlap_348(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('BoolVarArgs'(X5)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntVarArgs(X5,Y5) + -> (is_IntVarArgs(X6,Y6) + -> gecode_constraint_nooverlap_349(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVarArgs'(X6)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +nooverlap(X0,X1,X2,X3,X4,X5,X6,X7) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntVarArgs(X5,Y5) + -> (is_IntVarArgs(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_nooverlap_350(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; (is_BoolVarArgs(X7,Y7) + -> gecode_constraint_nooverlap_351(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('BoolVarArgs'(X7)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=8))))) + ; throw(error(type_error('IntVarArgs'(X6)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7),arg=1)))). + +nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVarArgs(X4,Y4) + -> (is_IntVarArgs(X5,Y5) + -> (is_IntVarArgs(X6,Y6) + -> (is_BoolVarArgs(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_nooverlap_352(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error('BoolVarArgs'(X7)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntVarArgs'(X6)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6)))) + ; throw(error(type_error('IntVarArgs'(X4)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nooverlap(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=1)))). + +nroot(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_nroot_353(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_nroot_354(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nroot(X0,X1,X2,X3),arg=1)))). + +nroot(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_nroot_355(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(nroot(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(nroot(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(nroot(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(nroot(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nroot(X0,X1,X2,X3,X4),arg=1)))). + +nvalues(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_nvalues_356(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_nvalues_358(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_nvalues_360(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_nvalues_362(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nvalues(X0,X1,X2,X3),arg=1)))). + +nvalues(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_nvalues_357(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_nvalues_359(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_nvalues_361(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_nvalues_363(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(nvalues(X0,X1,X2,X3,X4),arg=1)))). + +path(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVar(X5,Y5) + -> gecode_constraint_path_364(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_path_375(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error(int(X1)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5),arg=1)))). + +path(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVar(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_path_365(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; (is_IntVarArgs(X5,Y5) + -> (is_IntVar(X6,Y6) + -> gecode_constraint_path_366(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=6))))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVar(X5,Y5) + -> (is_IntVar(X6,Y6) + -> gecode_constraint_path_368(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=3))))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +path(X0,X1,X2,X3,X4,X5,X6,X7) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVarArgs(X5,Y5) + -> (is_IntVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_path_367(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntVar'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=7)))) + ; throw(error(type_error('IntVarArgs'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVar(X5,Y5) + -> (is_IntVar(X6,Y6) + -> (is_IntPropLevel(X7,Y7) + -> gecode_constraint_path_369(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntPropLevel'(X7)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; (is_IntVarArgs(X6,Y6) + -> (is_IntVar(X7,Y7) + -> gecode_constraint_path_370(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7) + ; throw(error(type_error('IntVar'(X7)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=8)))) + ; throw(error(type_error('IntVarArgs'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=7))))) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=3))))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7),arg=1)))). + +path(X0,X1,X2,X3,X4,X5,X6,X7,X8) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntVar(X4,Y4) + -> (is_IntVar(X5,Y5) + -> (is_IntVarArgs(X6,Y6) + -> (is_IntVar(X7,Y7) + -> (is_IntPropLevel(X8,Y8) + -> gecode_constraint_path_371(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8) + ; throw(error(type_error('IntPropLevel'(X8)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=9)))) + ; throw(error(type_error('IntVar'(X7)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=8)))) + ; throw(error(type_error('IntVarArgs'(X6)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=7)))) + ; throw(error(type_error('IntVar'(X5)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=6)))) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=3)))) + ; throw(error(type_error('IntArgs'(X1)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3,X4,X5,X6,X7,X8),arg=1)))). + +path(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_path_372(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(path(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(path(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3),arg=1)))). + +path(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_path_373(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=3)))) + ; (is_int(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntVar(X4,Y4) + -> gecode_constraint_path_374(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntVar'(X4)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error(int(X1)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(path(X0,X1,X2,X3,X4),arg=1)))). + +pow(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_FloatVar(X3,Y3) + -> gecode_constraint_pow_376(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(pow(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(pow(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_pow_377(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(pow(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(pow(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(pow(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(pow(X0,X1,X2,X3),arg=1)))). + +pow(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_int(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_pow_378(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(pow(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(pow(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(pow(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(pow(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(pow(X0,X1,X2,X3,X4),arg=1)))). + +precede(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> gecode_constraint_precede_379(Y0,Y1,Y2) + ; throw(error(type_error('IntArgs'(X2)),gecode_argument_error(precede(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(precede(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(precede(X0,X1,X2),arg=1)))). + +precede(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_precede_380(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(precede(X0,X1,X2,X3),arg=4)))) + ; (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> gecode_constraint_precede_381(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(precede(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(precede(X0,X1,X2,X3),arg=3))))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(precede(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(precede(X0,X1,X2,X3),arg=1)))). + +precede(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_int(X2,Y2) + -> (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_precede_382(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(precede(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(precede(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error(int(X2)),gecode_argument_error(precede(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(precede(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(precede(X0,X1,X2,X3,X4),arg=1)))). + +rel(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolOpType(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> gecode_constraint_rel_383(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_rel_385(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_BoolVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> gecode_constraint_rel_391(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_rel_395(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatRelType(X2,Y2) + -> (is_FloatVal(X3,Y3) + -> gecode_constraint_rel_399(Y0,Y1,Y2,Y3) + ; (is_FloatVar(X3,Y3) + -> gecode_constraint_rel_401(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('FloatRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_rel_403(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_rel_407(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; (is_SetRelType(X2,Y2) + -> (is_SetVar(X3,Y3) + -> gecode_constraint_rel_411(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3))))) + ; (is_SetVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_rel_413(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4)))) + ; (is_SetRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> gecode_constraint_rel_415(Y0,Y1,Y2,Y3) + ; (is_SetVar(X3,Y3) + -> gecode_constraint_rel_417(Y0,Y1,Y2,Y3) + ; throw(error(type_error('SetVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3))))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> gecode_constraint_rel_419(Y0,Y1,Y2,Y3) + ; (is_IntPropLevel(X3,Y3) + -> gecode_constraint_rel_422(Y0,Y1,Y2,Y3) + ; (is_BoolVarArgs(X3,Y3) + -> gecode_constraint_rel_423(Y0,Y1,Y2,Y3) + ; (is_IntArgs(X3,Y3) + -> gecode_constraint_rel_425(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_rel_427(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4)))))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_FloatVarArgs(X1,Y1) + -> (is_FloatRelType(X2,Y2) + -> (is_FloatVal(X3,Y3) + -> gecode_constraint_rel_429(Y0,Y1,Y2,Y3) + ; (is_FloatVar(X3,Y3) + -> gecode_constraint_rel_430(Y0,Y1,Y2,Y3) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('FloatRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_BoolVarArgs(X3,Y3) + -> gecode_constraint_rel_431(Y0,Y1,Y2,Y3) + ; (is_IntVarArgs(X3,Y3) + -> gecode_constraint_rel_433(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_rel_436(Y0,Y1,Y2,Y3) + ; (is_IntVar(X3,Y3) + -> gecode_constraint_rel_437(Y0,Y1,Y2,Y3) + ; (is_IntArgs(X3,Y3) + -> gecode_constraint_rel_439(Y0,Y1,Y2,Y3) + ; (is_IntVarArgs(X3,Y3) + -> gecode_constraint_rel_441(Y0,Y1,Y2,Y3) + ; (is_int(X3,Y3) + -> gecode_constraint_rel_443(Y0,Y1,Y2,Y3) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3),arg=4)))))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(rel(X0,X1,X2,X3),arg=2)))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(rel(X0,X1,X2,X3),arg=1)))). + +rel(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolOpType(X1,Y1) + -> (is_BoolVarArgs(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_384(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_386(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('BoolVarArgs'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3)))) + ; (is_BoolVar(X1,Y1) + -> (is_BoolOpType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> gecode_constraint_rel_387(Y0,Y1,Y2,Y3,Y4) + ; (is_int(X4,Y4) + -> gecode_constraint_rel_389(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(int(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('BoolVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntRelType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_392(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_rel_393(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5))))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_396(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_rel_397(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3))))) + ; (is_FloatVar(X1,Y1) + -> (is_FloatRelType(X2,Y2) + -> (is_FloatVal(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_400(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_FloatVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_402(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('FloatVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('FloatRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_404(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_rel_405(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5))))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_408(Y0,Y1,Y2,Y3,Y4) + ; (is_Reify(X4,Y4) + -> gecode_constraint_rel_409(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; (is_SetRelType(X2,Y2) + -> (is_SetVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_412(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('SetVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3))))) + ; (is_SetVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_414(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4)))) + ; (is_SetRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_416(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_SetVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> gecode_constraint_rel_418(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('SetVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('SetRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3))))) + ; (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_420(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_BoolVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_424(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_426(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_428(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_BoolVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_432(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_434(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_438(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_440(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_IntVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_442(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; (is_int(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_rel_444(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=4))))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=2))))))))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(rel(X0,X1,X2,X3,X4),arg=1)))). + +rel(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_BoolOpType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_BoolVar(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_388(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; (is_int(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_390(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=5))))) + ; throw(error(type_error('BoolVar'(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=4)))) + ; (is_IntRelType(X2,Y2) + -> (is_BoolVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_394(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_398(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=3))))) + ; (is_IntVar(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> (is_IntVar(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_406(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=5)))) + ; (is_int(X3,Y3) + -> (is_Reify(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_rel_410(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('Reify'(X4)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=4))))) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(rel(X0,X1,X2,X3,X4,X5),arg=1)))). + +rel(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> gecode_constraint_rel_421(Y0,Y1,Y2) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntRelType(X2,Y2) + -> gecode_constraint_rel_435(Y0,Y1,Y2) + ; throw(error(type_error('IntRelType'(X2)),gecode_argument_error(rel(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(rel(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(rel(X0,X1,X2),arg=1)))). + +relax(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_SetVarArgs(X1,Y1) + -> (is_SetVarArgs(X2,Y2) + -> (is_Rnd(X3,Y3) + -> (is_double(X4,Y4) + -> gecode_constraint_relax_445(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error(double(X4)),gecode_argument_error(relax(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('Rnd'(X3)),gecode_argument_error(relax(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('SetVarArgs'(X2)),gecode_argument_error(relax(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('SetVarArgs'(X1)),gecode_argument_error(relax(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(relax(X0,X1,X2,X3,X4),arg=1)))). + +sequence(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> (is_int(X5,Y5) + -> gecode_constraint_sequence_446(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error(int(X5)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntSet'(X2)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> (is_int(X5,Y5) + -> gecode_constraint_sequence_448(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error(int(X5)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntSet'(X2)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5),arg=1)))). + +sequence(X0,X1,X2,X3,X4,X5,X6) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> (is_int(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_sequence_447(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntSet'(X2)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntSet(X2,Y2) + -> (is_int(X3,Y3) + -> (is_int(X4,Y4) + -> (is_int(X5,Y5) + -> (is_IntPropLevel(X6,Y6) + -> gecode_constraint_sequence_449(Y0,Y1,Y2,Y3,Y4,Y5,Y6) + ; throw(error(type_error('IntPropLevel'(X6)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=7)))) + ; throw(error(type_error(int(X5)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=6)))) + ; throw(error(type_error(int(X4)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=5)))) + ; throw(error(type_error(int(X3)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=4)))) + ; throw(error(type_error('IntSet'(X2)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sequence(X0,X1,X2,X3,X4,X5,X6),arg=1)))). + +sorted(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> gecode_constraint_sorted_450(Y0,Y1,Y2) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(sorted(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(sorted(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sorted(X0,X1,X2),arg=1)))). + +sorted(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_sorted_451(Y0,Y1,Y2,Y3) + ; (is_IntVarArgs(X3,Y3) + -> gecode_constraint_sorted_452(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(sorted(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(sorted(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(sorted(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sorted(X0,X1,X2,X3),arg=1)))). + +sorted(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_sorted_453(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(sorted(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(sorted(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(sorted(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(sorted(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sorted(X0,X1,X2,X3,X4),arg=1)))). + +sqr(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> gecode_constraint_sqr_454(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(sqr(X0,X1,X2),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_sqr_455(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(sqr(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(sqr(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sqr(X0,X1,X2),arg=1)))). + +sqr(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_sqr_456(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(sqr(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(sqr(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(sqr(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sqr(X0,X1,X2,X3),arg=1)))). + +sqrt(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_FloatVar(X1,Y1) + -> (is_FloatVar(X2,Y2) + -> gecode_constraint_sqrt_457(Y0,Y1,Y2) + ; throw(error(type_error('FloatVar'(X2)),gecode_argument_error(sqrt(X0,X1,X2),arg=3)))) + ; (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> gecode_constraint_sqrt_458(Y0,Y1,Y2) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(sqrt(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(sqrt(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sqrt(X0,X1,X2),arg=1)))). + +sqrt(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVar(X1,Y1) + -> (is_IntVar(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_sqrt_459(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntPropLevel'(X3)),gecode_argument_error(sqrt(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVar'(X2)),gecode_argument_error(sqrt(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('IntVar'(X1)),gecode_argument_error(sqrt(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(sqrt(X0,X1,X2,X3),arg=1)))). + +unary(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> gecode_constraint_unary_460(Y0,Y1,Y2) + ; throw(error(type_error('IntArgs'(X2)),gecode_argument_error(unary(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(unary(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unary(X0,X1,X2),arg=1)))). + +unary(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_unary_461(Y0,Y1,Y2,Y3) + ; (is_BoolVarArgs(X3,Y3) + -> gecode_constraint_unary_462(Y0,Y1,Y2,Y3) + ; throw(error(type_error('BoolVarArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3),arg=4))))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> gecode_constraint_unary_464(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3),arg=3))))) + ; (is_TaskTypeArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> gecode_constraint_unary_468(Y0,Y1,Y2,Y3) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('TaskTypeArgs'(X1)),gecode_argument_error(unary(X0,X1,X2,X3),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unary(X0,X1,X2,X3),arg=1)))). + +unary(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntArgs(X2,Y2) + -> (is_BoolVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_unary_463(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('BoolVarArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=4)))) + ; (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_unary_465(Y0,Y1,Y2,Y3,Y4) + ; (is_BoolVarArgs(X4,Y4) + -> gecode_constraint_unary_466(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('BoolVarArgs'(X4)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=3))))) + ; (is_TaskTypeArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_unary_469(Y0,Y1,Y2,Y3,Y4) + ; (is_BoolVarArgs(X4,Y4) + -> gecode_constraint_unary_470(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('BoolVarArgs'(X4)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=5))))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('TaskTypeArgs'(X1)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unary(X0,X1,X2,X3,X4),arg=1)))). + +unary(X0,X1,X2,X3,X4,X5) :- + (is_Space_or_Clause(X0,Y0) + -> (is_IntVarArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntVarArgs(X3,Y3) + -> (is_BoolVarArgs(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_unary_467(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('BoolVarArgs'(X4)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntVarArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=3)))) + ; (is_TaskTypeArgs(X1,Y1) + -> (is_IntVarArgs(X2,Y2) + -> (is_IntArgs(X3,Y3) + -> (is_BoolVarArgs(X4,Y4) + -> (is_IntPropLevel(X5,Y5) + -> gecode_constraint_unary_471(Y0,Y1,Y2,Y3,Y4,Y5) + ; throw(error(type_error('IntPropLevel'(X5)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=6)))) + ; throw(error(type_error('BoolVarArgs'(X4)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=5)))) + ; throw(error(type_error('IntArgs'(X3)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=4)))) + ; throw(error(type_error('IntVarArgs'(X2)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=3)))) + ; throw(error(type_error('TaskTypeArgs'(X1)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unary(X0,X1,X2,X3,X4,X5),arg=1)))). + +unshare(X0,X1) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> gecode_constraint_unshare_472(Y0,Y1) + ; (is_IntVarArgs(X1,Y1) + -> gecode_constraint_unshare_474(Y0,Y1) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(unshare(X0,X1),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unshare(X0,X1),arg=1)))). + +unshare(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVarArgs(X1,Y1) + -> (is_IntPropLevel(X2,Y2) + -> gecode_constraint_unshare_473(Y0,Y1,Y2) + ; throw(error(type_error('IntPropLevel'(X2)),gecode_argument_error(unshare(X0,X1,X2),arg=3)))) + ; (is_IntVarArgs(X1,Y1) + -> (is_IntPropLevel(X2,Y2) + -> gecode_constraint_unshare_475(Y0,Y1,Y2) + ; throw(error(type_error('IntPropLevel'(X2)),gecode_argument_error(unshare(X0,X1,X2),arg=3)))) + ; throw(error(type_error('IntVarArgs'(X1)),gecode_argument_error(unshare(X0,X1,X2),arg=2))))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(unshare(X0,X1,X2),arg=1)))). + +when(X0,X1,X2) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_std_function(X2,Y2) + -> gecode_constraint_when_476(Y0,Y1,Y2) + ; throw(error(type_error('std::function'(X2)),gecode_argument_error(when(X0,X1,X2),arg=3)))) + ; throw(error(type_error('BoolVar'(X1)),gecode_argument_error(when(X0,X1,X2),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(when(X0,X1,X2),arg=1)))). + +when(X0,X1,X2,X3) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_std_function(X2,Y2) + -> (is_IntPropLevel(X3,Y3) + -> gecode_constraint_when_477(Y0,Y1,Y2,Y3) + ; (is_std_function(X3,Y3) + -> gecode_constraint_when_478(Y0,Y1,Y2,Y3) + ; throw(error(type_error('std::function'(X3)),gecode_argument_error(when(X0,X1,X2,X3),arg=4))))) + ; throw(error(type_error('std::function'(X2)),gecode_argument_error(when(X0,X1,X2,X3),arg=3)))) + ; throw(error(type_error('BoolVar'(X1)),gecode_argument_error(when(X0,X1,X2,X3),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(when(X0,X1,X2,X3),arg=1)))). + +when(X0,X1,X2,X3,X4) :- + (is_Space_or_Clause(X0,Y0) + -> (is_BoolVar(X1,Y1) + -> (is_std_function(X2,Y2) + -> (is_std_function(X3,Y3) + -> (is_IntPropLevel(X4,Y4) + -> gecode_constraint_when_479(Y0,Y1,Y2,Y3,Y4) + ; throw(error(type_error('IntPropLevel'(X4)),gecode_argument_error(when(X0,X1,X2,X3,X4),arg=5)))) + ; throw(error(type_error('std::function'(X3)),gecode_argument_error(when(X0,X1,X2,X3,X4),arg=4)))) + ; throw(error(type_error('std::function'(X2)),gecode_argument_error(when(X0,X1,X2,X3,X4),arg=3)))) + ; throw(error(type_error('BoolVar'(X1)),gecode_argument_error(when(X0,X1,X2,X3,X4),arg=2)))) + ; throw(error(type_error('Space'(X0)),gecode_argument_error(when(X0,X1,X2,X3,X4),arg=1)))). + diff --git a/packages/gecode/6.0.0/gecode_yap_cc_forward_auto_generated.icc b/packages/gecode/6.0.0/gecode_yap_cc_forward_auto_generated.icc new file mode 100644 index 000000000..dd1196994 --- /dev/null +++ b/packages/gecode/6.0.0/gecode_yap_cc_forward_auto_generated.icc @@ -0,0 +1,28 @@ +// -*- c++ -*- +//============================================================================= +// Copyright (C) 2011 by Denys Duchier +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation, either version 3 of the License, or (at your +// option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +//============================================================================= + +static RestartMode gecode_RestartMode_from_term(YAP_Term); +static FloatRelType gecode_FloatRelType_from_term(YAP_Term); +static ReifyMode gecode_ReifyMode_from_term(YAP_Term); +static IntRelType gecode_IntRelType_from_term(YAP_Term); +static BoolOpType gecode_BoolOpType_from_term(YAP_Term); +static IntPropLevel gecode_IntPropLevel_from_term(YAP_Term); +static TaskType gecode_TaskType_from_term(YAP_Term); +static TraceEvent gecode_TraceEvent_from_term(YAP_Term); +static SetRelType gecode_SetRelType_from_term(YAP_Term); +static SetOpType gecode_SetOpType_from_term(YAP_Term); diff --git a/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc b/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc new file mode 100644 index 000000000..c170ac3c2 --- /dev/null +++ b/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc @@ -0,0 +1,5412 @@ +// -*- c++ -*- +//============================================================================= +// Copyright (C) 2011 by Denys Duchier +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation, either version 3 of the License, or (at your +// option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +//============================================================================= + +static YAP_Term gecode_RM_NONE; +static YAP_Term gecode_RM_CONSTANT; +static YAP_Term gecode_RM_LINEAR; +static YAP_Term gecode_RM_LUBY; +static YAP_Term gecode_RM_GEOMETRIC; + +static RestartMode gecode_RestartMode_from_term(YAP_Term X) +{ + if (X==gecode_RM_NONE) return RM_NONE; + if (X==gecode_RM_CONSTANT) return RM_CONSTANT; + if (X==gecode_RM_LINEAR) return RM_LINEAR; + if (X==gecode_RM_LUBY) return RM_LUBY; + if (X==gecode_RM_GEOMETRIC) return RM_GEOMETRIC; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_FRT_EQ; +static YAP_Term gecode_FRT_NQ; +static YAP_Term gecode_FRT_LQ; +static YAP_Term gecode_FRT_LE; +static YAP_Term gecode_FRT_GQ; +static YAP_Term gecode_FRT_GR; + +static FloatRelType gecode_FloatRelType_from_term(YAP_Term X) +{ + if (X==gecode_FRT_EQ) return FRT_EQ; + if (X==gecode_FRT_NQ) return FRT_NQ; + if (X==gecode_FRT_LQ) return FRT_LQ; + if (X==gecode_FRT_LE) return FRT_LE; + if (X==gecode_FRT_GQ) return FRT_GQ; + if (X==gecode_FRT_GR) return FRT_GR; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_RM_EQV; +static YAP_Term gecode_RM_IMP; +static YAP_Term gecode_RM_PMI; + +static ReifyMode gecode_ReifyMode_from_term(YAP_Term X) +{ + if (X==gecode_RM_EQV) return RM_EQV; + if (X==gecode_RM_IMP) return RM_IMP; + if (X==gecode_RM_PMI) return RM_PMI; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_IRT_EQ; +static YAP_Term gecode_IRT_NQ; +static YAP_Term gecode_IRT_LQ; +static YAP_Term gecode_IRT_LE; +static YAP_Term gecode_IRT_GQ; +static YAP_Term gecode_IRT_GR; + +static IntRelType gecode_IntRelType_from_term(YAP_Term X) +{ + if (X==gecode_IRT_EQ) return IRT_EQ; + if (X==gecode_IRT_NQ) return IRT_NQ; + if (X==gecode_IRT_LQ) return IRT_LQ; + if (X==gecode_IRT_LE) return IRT_LE; + if (X==gecode_IRT_GQ) return IRT_GQ; + if (X==gecode_IRT_GR) return IRT_GR; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_BOT_AND; +static YAP_Term gecode_BOT_OR; +static YAP_Term gecode_BOT_IMP; +static YAP_Term gecode_BOT_EQV; +static YAP_Term gecode_BOT_XOR; + +static BoolOpType gecode_BoolOpType_from_term(YAP_Term X) +{ + if (X==gecode_BOT_AND) return BOT_AND; + if (X==gecode_BOT_OR) return BOT_OR; + if (X==gecode_BOT_IMP) return BOT_IMP; + if (X==gecode_BOT_EQV) return BOT_EQV; + if (X==gecode_BOT_XOR) return BOT_XOR; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_IPL_DEF; +static YAP_Term gecode_IPL_VAL; +static YAP_Term gecode_IPL_BND; +static YAP_Term gecode_IPL_DOM; +static YAP_Term gecode_IPL_SPEED; +static YAP_Term gecode_IPL_MEMORY; +static YAP_Term gecode_IPL_BASIC; +static YAP_Term gecode_IPL_ADVANCED; +static YAP_Term gecode_IPL_BASIC_ADVANCED; + +static IntPropLevel gecode_IntPropLevel_from_term(YAP_Term X) +{ + if (X==gecode_IPL_DEF) return IPL_DEF; + if (X==gecode_IPL_VAL) return IPL_VAL; + if (X==gecode_IPL_BND) return IPL_BND; + if (X==gecode_IPL_DOM) return IPL_DOM; + if (X==gecode_IPL_SPEED) return IPL_SPEED; + if (X==gecode_IPL_MEMORY) return IPL_MEMORY; + if (X==gecode_IPL_BASIC) return IPL_BASIC; + if (X==gecode_IPL_ADVANCED) return IPL_ADVANCED; + if (X==gecode_IPL_BASIC_ADVANCED) return IPL_BASIC_ADVANCED; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_TT_FIXP; +static YAP_Term gecode_TT_FIXS; +static YAP_Term gecode_TT_FIXE; + +static TaskType gecode_TaskType_from_term(YAP_Term X) +{ + if (X==gecode_TT_FIXP) return TT_FIXP; + if (X==gecode_TT_FIXS) return TT_FIXS; + if (X==gecode_TT_FIXE) return TT_FIXE; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_TE_INIT; +static YAP_Term gecode_TE_PRUNE; +static YAP_Term gecode_TE_FIX; +static YAP_Term gecode_TE_FAIL; +static YAP_Term gecode_TE_DONE; +static YAP_Term gecode_TE_PROPAGATE; +static YAP_Term gecode_TE_COMMIT; + +static TraceEvent gecode_TraceEvent_from_term(YAP_Term X) +{ + if (X==gecode_TE_INIT) return TE_INIT; + if (X==gecode_TE_PRUNE) return TE_PRUNE; + if (X==gecode_TE_FIX) return TE_FIX; + if (X==gecode_TE_FAIL) return TE_FAIL; + if (X==gecode_TE_DONE) return TE_DONE; + if (X==gecode_TE_PROPAGATE) return TE_PROPAGATE; + if (X==gecode_TE_COMMIT) return TE_COMMIT; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_SRT_EQ; +static YAP_Term gecode_SRT_NQ; +static YAP_Term gecode_SRT_SUB; +static YAP_Term gecode_SRT_SUP; +static YAP_Term gecode_SRT_DISJ; +static YAP_Term gecode_SRT_CMPL; +static YAP_Term gecode_SRT_LQ; +static YAP_Term gecode_SRT_LE; +static YAP_Term gecode_SRT_GQ; +static YAP_Term gecode_SRT_GR; + +static SetRelType gecode_SetRelType_from_term(YAP_Term X) +{ + if (X==gecode_SRT_EQ) return SRT_EQ; + if (X==gecode_SRT_NQ) return SRT_NQ; + if (X==gecode_SRT_SUB) return SRT_SUB; + if (X==gecode_SRT_SUP) return SRT_SUP; + if (X==gecode_SRT_DISJ) return SRT_DISJ; + if (X==gecode_SRT_CMPL) return SRT_CMPL; + if (X==gecode_SRT_LQ) return SRT_LQ; + if (X==gecode_SRT_LE) return SRT_LE; + if (X==gecode_SRT_GQ) return SRT_GQ; + if (X==gecode_SRT_GR) return SRT_GR; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Term gecode_SOT_UNION; +static YAP_Term gecode_SOT_DUNION; +static YAP_Term gecode_SOT_INTER; +static YAP_Term gecode_SOT_MINUS; + +static SetOpType gecode_SetOpType_from_term(YAP_Term X) +{ + if (X==gecode_SOT_UNION) return SOT_UNION; + if (X==gecode_SOT_DUNION) return SOT_DUNION; + if (X==gecode_SOT_INTER) return SOT_INTER; + if (X==gecode_SOT_MINUS) return SOT_MINUS; + cerr << "this should never happen" << endl; exit(1); +} + +static YAP_Bool gecode_constraint_branch_1(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + std::function X2 = gecode_std_function_from_term(YAP_ARG2); + branch(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_convex_2(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + convex(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_convex_3(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetVar X3 = gecode_SetVar_from_term(space,YAP_ARG3); + convex(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_abs_4(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + abs(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_abs_5(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + abs(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_abs_6(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + abs(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_7(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + argmax(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_8(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + bool X4 = gecode_bool_from_term(YAP_ARG4); + argmax(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_10(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + argmax(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_9(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + bool X4 = gecode_bool_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + argmax(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_11(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + bool X5 = gecode_bool_from_term(YAP_ARG5); + argmax(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmax_12(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + bool X5 = gecode_bool_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + argmax(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_13(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + argmin(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_14(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + bool X4 = gecode_bool_from_term(YAP_ARG4); + argmin(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_16(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + argmin(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_15(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + bool X4 = gecode_bool_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + argmin(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_17(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + bool X5 = gecode_bool_from_term(YAP_ARG5); + argmin(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_argmin_18(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + bool X5 = gecode_bool_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + argmin(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_19(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolAssign X3 = gecode_BoolAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_21(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatAssign X3 = gecode_FloatAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_23(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntAssign X3 = gecode_IntAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_25(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetAssign X3 = gecode_SetAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_27(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolAssign X3 = gecode_BoolAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_30(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatAssign X3 = gecode_FloatAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_33(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntAssign X3 = gecode_IntAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_36(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetAssign X3 = gecode_SetAssign_from_term(YAP_ARG3); + assign(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_20(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolAssign X3 = gecode_BoolAssign_from_term(YAP_ARG3); + BoolVarValPrint X4 = gecode_BoolVarValPrint_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_22(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatAssign X3 = gecode_FloatAssign_from_term(YAP_ARG3); + FloatVarValPrint X4 = gecode_FloatVarValPrint_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_24(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntAssign X3 = gecode_IntAssign_from_term(YAP_ARG3); + IntVarValPrint X4 = gecode_IntVarValPrint_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_26(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetAssign X3 = gecode_SetAssign_from_term(YAP_ARG3); + SetVarValPrint X4 = gecode_SetVarValPrint_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_28(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolAssign X3 = gecode_BoolAssign_from_term(YAP_ARG3); + BoolBranchFilter X4 = gecode_BoolBranchFilter_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_31(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatAssign X3 = gecode_FloatAssign_from_term(YAP_ARG3); + FloatBranchFilter X4 = gecode_FloatBranchFilter_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_34(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntAssign X3 = gecode_IntAssign_from_term(YAP_ARG3); + IntBranchFilter X4 = gecode_IntBranchFilter_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_37(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetAssign X3 = gecode_SetAssign_from_term(YAP_ARG3); + SetBranchFilter X4 = gecode_SetBranchFilter_from_term(YAP_ARG4); + assign(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_29(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolAssign X3 = gecode_BoolAssign_from_term(YAP_ARG3); + BoolBranchFilter X4 = gecode_BoolBranchFilter_from_term(YAP_ARG4); + BoolVarValPrint X5 = gecode_BoolVarValPrint_from_term(YAP_ARG5); + assign(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_32(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatAssign X3 = gecode_FloatAssign_from_term(YAP_ARG3); + FloatBranchFilter X4 = gecode_FloatBranchFilter_from_term(YAP_ARG4); + FloatVarValPrint X5 = gecode_FloatVarValPrint_from_term(YAP_ARG5); + assign(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_35(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntAssign X3 = gecode_IntAssign_from_term(YAP_ARG3); + IntBranchFilter X4 = gecode_IntBranchFilter_from_term(YAP_ARG4); + IntVarValPrint X5 = gecode_IntVarValPrint_from_term(YAP_ARG5); + assign(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_assign_38(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetAssign X3 = gecode_SetAssign_from_term(YAP_ARG3); + SetBranchFilter X4 = gecode_SetBranchFilter_from_term(YAP_ARG4); + SetVarValPrint X5 = gecode_SetVarValPrint_from_term(YAP_ARG5); + assign(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_binpacking_39(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + binpacking(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_binpacking_40(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + binpacking(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_41(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolValBranch X3 = gecode_BoolValBranch_from_term(YAP_ARG3); + branch(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_43(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatValBranch X3 = gecode_FloatValBranch_from_term(YAP_ARG3); + branch(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_45(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntValBranch X3 = gecode_IntValBranch_from_term(YAP_ARG3); + branch(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_47(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetValBranch X3 = gecode_SetValBranch_from_term(YAP_ARG3); + branch(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_42(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolValBranch X3 = gecode_BoolValBranch_from_term(YAP_ARG3); + BoolVarValPrint X4 = gecode_BoolVarValPrint_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_44(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatValBranch X3 = gecode_FloatValBranch_from_term(YAP_ARG3); + FloatVarValPrint X4 = gecode_FloatVarValPrint_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_46(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntValBranch X3 = gecode_IntValBranch_from_term(YAP_ARG3); + IntVarValPrint X4 = gecode_IntVarValPrint_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_48(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetValBranch X3 = gecode_SetValBranch_from_term(YAP_ARG3); + SetVarValPrint X4 = gecode_SetVarValPrint_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_49(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_55(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_61(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVarBranch X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_64(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_67(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_73(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_79(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_85(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + branch(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_50(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + BoolBranchFilter X5 = gecode_BoolBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_52(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_56(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + BoolBranchFilter X5 = gecode_BoolBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_58(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_62(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVarBranch X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + FloatBranchFilter X5 = gecode_FloatBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_65(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + FloatBranchFilter X5 = gecode_FloatBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_68(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + IntBranchFilter X5 = gecode_IntBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_70(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_74(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + IntBranchFilter X5 = gecode_IntBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_76(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_80(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + SetBranchFilter X5 = gecode_SetBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_82(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_86(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + SetBranchFilter X5 = gecode_SetBranchFilter_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_88(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + branch(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_51(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + BoolBranchFilter X5 = gecode_BoolBranchFilter_from_term(YAP_ARG5); + BoolVarValPrint X6 = gecode_BoolVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_53(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + BoolBranchFilter X6 = gecode_BoolBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_57(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + BoolBranchFilter X5 = gecode_BoolBranchFilter_from_term(YAP_ARG5); + BoolVarValPrint X6 = gecode_BoolVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_59(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + BoolBranchFilter X6 = gecode_BoolBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_63(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVarBranch X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + FloatBranchFilter X5 = gecode_FloatBranchFilter_from_term(YAP_ARG5); + FloatVarValPrint X6 = gecode_FloatVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_66(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_FloatVarBranch_from_term(YAP_ARG3); + FloatValBranch X4 = gecode_FloatValBranch_from_term(YAP_ARG4); + FloatBranchFilter X5 = gecode_FloatBranchFilter_from_term(YAP_ARG5); + FloatVarValPrint X6 = gecode_FloatVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_69(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + IntBranchFilter X5 = gecode_IntBranchFilter_from_term(YAP_ARG5); + IntVarValPrint X6 = gecode_IntVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_71(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + IntBranchFilter X6 = gecode_IntBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_75(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + IntBranchFilter X5 = gecode_IntBranchFilter_from_term(YAP_ARG5); + IntVarValPrint X6 = gecode_IntVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_77(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + IntBranchFilter X6 = gecode_IntBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_81(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + SetBranchFilter X5 = gecode_SetBranchFilter_from_term(YAP_ARG5); + SetVarValPrint X6 = gecode_SetVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_83(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + SetBranchFilter X6 = gecode_SetBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_87(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + SetBranchFilter X5 = gecode_SetBranchFilter_from_term(YAP_ARG5); + SetVarValPrint X6 = gecode_SetVarValPrint_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_89(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + SetBranchFilter X6 = gecode_SetBranchFilter_from_term(YAP_ARG6); + branch(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_54(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarBranch X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + BoolBranchFilter X6 = gecode_BoolBranchFilter_from_term(YAP_ARG6); + BoolVarValPrint X7 = gecode_BoolVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_60(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_BoolVarBranch_from_term(YAP_ARG3); + BoolValBranch X4 = gecode_BoolValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + BoolBranchFilter X6 = gecode_BoolBranchFilter_from_term(YAP_ARG6); + BoolVarValPrint X7 = gecode_BoolVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_72(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarBranch X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + IntBranchFilter X6 = gecode_IntBranchFilter_from_term(YAP_ARG6); + IntVarValPrint X7 = gecode_IntVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_78(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_IntVarBranch_from_term(YAP_ARG3); + IntValBranch X4 = gecode_IntValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + IntBranchFilter X6 = gecode_IntBranchFilter_from_term(YAP_ARG6); + IntVarValPrint X7 = gecode_IntVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_84(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarBranch X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + SetBranchFilter X6 = gecode_SetBranchFilter_from_term(YAP_ARG6); + SetVarValPrint X7 = gecode_SetVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_branch_90(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + TieBreak X3 = gecode_SetVarBranch_from_term(YAP_ARG3); + SetValBranch X4 = gecode_SetValBranch_from_term(YAP_ARG4); + Symmetries X5 = gecode_Symmetries_from_term(YAP_ARG5); + SetBranchFilter X6 = gecode_SetBranchFilter_from_term(YAP_ARG6); + SetVarValPrint X7 = gecode_SetVarValPrint_from_term(YAP_ARG7); + branch(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cardinality_91(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + cardinality(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_cardinality_92(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + cardinality(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_93(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + channel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_95(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + channel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_96(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + channel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_97(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + channel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_100(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + channel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_94(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + channel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_98(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + channel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_101(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + channel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_99(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + channel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_102(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + channel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_channel_103(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + channel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_104(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + circuit(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_115(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + circuit(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_105(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + circuit(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_106(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + circuit(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_108(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + circuit(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_107(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + circuit(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_109(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + circuit(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_110(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + circuit(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_111(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + circuit(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_112(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + circuit(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_113(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntPropLevel X3 = gecode_IntPropLevel_from_term(YAP_ARG3); + circuit(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_circuit_114(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + circuit(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_clause_116(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + clause(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_clause_118(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + clause(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_clause_117(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + clause(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_clause_119(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + clause(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_120(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_122(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_124(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_126(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_128(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_130(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_133(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_137(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSetArgs X3 = gecode_IntSetArgs_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_141(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_142(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_144(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + count(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_121(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_123(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_125(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_127(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_129(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_131(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_143(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_145(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + count(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_132(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + count(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_135(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSetArgs X3 = gecode_IntSetArgs_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + count(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_136(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSetArgs X3 = gecode_IntSetArgs_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + count(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_139(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + count(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_140(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + count(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_134(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSetArgs X3 = gecode_IntSetArgs_from_term(YAP_ARG3); + count(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_count_138(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + count(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_146(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + cumulative(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_158(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + cumulative(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_147(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_148(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_150(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_154(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_159(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_160(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_162(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_166(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + cumulative(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_149(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_151(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_152(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_155(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_156(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_161(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_163(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_164(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_167(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_168(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + cumulative(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_153(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + cumulative(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_157(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + cumulative(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_165(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + cumulative(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulative_169(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + TaskTypeArgs X3 = gecode_TaskTypeArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + BoolVarArgs X7 = gecode_BoolVarArgs_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + cumulative(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_170(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_172(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_174(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_176(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_178(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_180(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_182(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_184(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_171(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_173(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_175(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_177(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_179(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_181(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_183(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntArgs X6 = gecode_IntArgs_from_term(YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_cumulatives_185(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntArgs X7 = gecode_IntArgs_from_term(YAP_ARG7); + bool X8 = gecode_bool_from_term(YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + cumulatives(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_186(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + distinct(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_188(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + distinct(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_191(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntPropLevel X3 = gecode_IntPropLevel_from_term(YAP_ARG3); + distinct(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_192(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + distinct(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_187(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + distinct(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_189(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + distinct(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_193(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + distinct(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_distinct_190(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + distinct(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_div_194(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + div(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_div_195(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + div(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_div_196(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + div(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_divmod_197(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + divmod(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_divmod_198(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + divmod(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_199(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_203(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVal X3 = gecode_FloatVal_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_205(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_206(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_208(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_212(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_226(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetVar X3 = gecode_SetVar_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_227(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_230(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVal X3 = gecode_FloatVal_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_231(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVarArgs X3 = gecode_FloatVarArgs_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_232(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_234(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_236(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_243(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarArgs X3 = gecode_SetVarArgs_from_term(space,YAP_ARG3); + dom(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_200(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_201(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatNum X3 = gecode_FloatNum_from_term(YAP_ARG3); + FloatNum X4 = gecode_FloatNum_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_204(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVal X3 = gecode_FloatVal_from_term(YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_207(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_209(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_210(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_213(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_214(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_216(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_220(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + IntSet X4 = gecode_IntSet_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_222(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_228(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_229(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatNum X3 = gecode_FloatNum_from_term(YAP_ARG3); + FloatNum X4 = gecode_FloatNum_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_233(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_235(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_237(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_238(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_240(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + IntSet X4 = gecode_IntSet_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_241(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + dom(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_202(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatNum X3 = gecode_FloatNum_from_term(YAP_ARG3); + FloatNum X4 = gecode_FloatNum_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_211(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_215(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_217(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_218(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_221(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + IntSet X4 = gecode_IntSet_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_223(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_224(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_239(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_242(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + dom(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_219(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + dom(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_dom_225(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + dom(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_244(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_246(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_248(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_254(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_256(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_260(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_262(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + element(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_245(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_247(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_249(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_255(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_257(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_261(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_263(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + element(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_250(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + BoolVar X7 = gecode_BoolVar_from_term(space,YAP_ARG7); + element(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_252(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + element(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_258(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + BoolVar X7 = gecode_BoolVar_from_term(space,YAP_ARG7); + element(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_264(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + element(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_251(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + BoolVar X7 = gecode_BoolVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + element(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_253(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + element(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_259(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + BoolVar X7 = gecode_BoolVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + element(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_element_265(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + element(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_266(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + DFA X3 = gecode_DFA_from_term(YAP_ARG3); + extensional(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_268(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TupleSet X3 = gecode_TupleSet_from_term(YAP_ARG3); + extensional(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_270(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + DFA X3 = gecode_DFA_from_term(YAP_ARG3); + extensional(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_272(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TupleSet X3 = gecode_TupleSet_from_term(YAP_ARG3); + extensional(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_267(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + DFA X3 = gecode_DFA_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + extensional(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_269(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + TupleSet X3 = gecode_TupleSet_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + extensional(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_271(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + DFA X3 = gecode_DFA_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + extensional(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_extensional_273(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + TupleSet X3 = gecode_TupleSet_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + extensional(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_274(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + ite(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_276(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + FloatVar X5 = gecode_FloatVar_from_term(space,YAP_ARG5); + ite(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_277(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + ite(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_279(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + SetVar X3 = gecode_SetVar_from_term(space,YAP_ARG3); + SetVar X4 = gecode_SetVar_from_term(space,YAP_ARG4); + SetVar X5 = gecode_SetVar_from_term(space,YAP_ARG5); + ite(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_275(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + ite(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_ite_278(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + ite(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_280(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_284(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_292(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVal X4 = gecode_FloatVal_from_term(YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_294(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_312(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_316(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + linear(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_281(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_282(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_285(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_286(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_288(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatValArgs X2 = gecode_FloatValArgs_from_term(YAP_ARG2); + FloatVarArgs X3 = gecode_FloatVarArgs_from_term(space,YAP_ARG3); + FloatRelType X4 = gecode_FloatRelType_from_term(YAP_ARG4); + FloatVal X5 = gecode_FloatVal_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_290(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatValArgs X2 = gecode_FloatValArgs_from_term(YAP_ARG2); + FloatVarArgs X3 = gecode_FloatVarArgs_from_term(space,YAP_ARG3); + FloatRelType X4 = gecode_FloatRelType_from_term(YAP_ARG4); + FloatVar X5 = gecode_FloatVar_from_term(space,YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_293(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVal X4 = gecode_FloatVal_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_295(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_296(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_300(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_304(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_308(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_313(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_314(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_317(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_318(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + linear(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_283(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_287(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_289(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatValArgs X2 = gecode_FloatValArgs_from_term(YAP_ARG2); + FloatVarArgs X3 = gecode_FloatVarArgs_from_term(space,YAP_ARG3); + FloatRelType X4 = gecode_FloatRelType_from_term(YAP_ARG4); + FloatVal X5 = gecode_FloatVal_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_291(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatValArgs X2 = gecode_FloatValArgs_from_term(YAP_ARG2); + FloatVarArgs X3 = gecode_FloatVarArgs_from_term(space,YAP_ARG3); + FloatRelType X4 = gecode_FloatRelType_from_term(YAP_ARG4); + FloatVar X5 = gecode_FloatVar_from_term(space,YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_297(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_298(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_301(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_302(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_305(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_306(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_309(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_310(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_315(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_319(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + linear(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_299(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + linear(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_303(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + linear(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_307(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + linear(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_linear_311(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntRelType X4 = gecode_IntRelType_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + Reify X6 = gecode_Reify_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + linear(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_320(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + max(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_321(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + max(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_325(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + max(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_322(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + max(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_323(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + max(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_max_324(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + max(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_326(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + member(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_330(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + member(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_327(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + member(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_328(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + member(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_331(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + member(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_332(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + member(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_329(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + BoolVar X3 = gecode_BoolVar_from_term(space,YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + member(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_member_333(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + Reify X4 = gecode_Reify_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + member(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_334(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + min(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_335(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + min(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_339(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + min(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_336(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + min(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_337(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + min(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_min_338(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + min(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_mod_340(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + mod(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_mod_341(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + mod(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_mult_342(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + mult(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_mult_343(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + mult(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_mult_344(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + mult(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_345(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + nooverlap(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_346(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + nooverlap(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_347(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + nooverlap(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_348(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntArgs X5 = gecode_IntArgs_from_term(YAP_ARG5); + BoolVarArgs X6 = gecode_BoolVarArgs_from_term(space,YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + nooverlap(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_349(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + nooverlap(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_350(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + nooverlap(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_351(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + BoolVarArgs X8 = gecode_BoolVarArgs_from_term(space,YAP_ARG8); + nooverlap(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_nooverlap_352(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVarArgs X5 = gecode_IntVarArgs_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + BoolVarArgs X8 = gecode_BoolVarArgs_from_term(space,YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + nooverlap(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_nroot_353(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + nroot(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nroot_354(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + nroot(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nroot_355(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + nroot(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_356(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + nvalues(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_358(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + nvalues(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_360(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + nvalues(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_362(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + nvalues(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_357(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + nvalues(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_359(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + nvalues(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_361(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + nvalues(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_nvalues_363(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + nvalues(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_364(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + path(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_375(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + path(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_365(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + path(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_366(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + path(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_368(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + path(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_367(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVarArgs X6 = gecode_IntVarArgs_from_term(space,YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + path(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_369(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntVar X7 = gecode_IntVar_from_term(space,YAP_ARG7); + IntPropLevel X8 = gecode_IntPropLevel_from_term(YAP_ARG8); + path(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_370(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + IntVar X8 = gecode_IntVar_from_term(space,YAP_ARG8); + path(*space,X2,X3,X4,X5,X6,X7,X8); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_371(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + IntVar X6 = gecode_IntVar_from_term(space,YAP_ARG6); + IntVarArgs X7 = gecode_IntVarArgs_from_term(space,YAP_ARG7); + IntVar X8 = gecode_IntVar_from_term(space,YAP_ARG8); + IntPropLevel X9 = gecode_IntPropLevel_from_term(YAP_ARG9); + path(*space,X2,X3,X4,X5,X6,X7,X8,X9); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_372(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + path(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_373(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + path(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_path_374(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int X2 = gecode_int_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntVar X5 = gecode_IntVar_from_term(space,YAP_ARG5); + path(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_pow_376(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + pow(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_pow_377(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + pow(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_pow_378(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + pow(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_precede_379(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + precede(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_precede_380(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + precede(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_precede_381(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + precede(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_precede_382(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + int X3 = gecode_int_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + precede(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_383(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_385(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_391(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_395(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_399(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVal X4 = gecode_FloatVal_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_401(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_403(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_407(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_411(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + SetVar X4 = gecode_SetVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_413(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_415(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_417(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + SetVar X4 = gecode_SetVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_419(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_422(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_423(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_425(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_427(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_429(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVal X4 = gecode_FloatVal_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_430(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVarArgs X2 = gecode_FloatVarArgs_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_431(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_433(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_436(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_437(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_439(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_441(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_443(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + rel(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_384(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_386(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolOpType X2 = gecode_BoolOpType_from_term(YAP_ARG2); + BoolVarArgs X3 = gecode_BoolVarArgs_from_term(space,YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_387(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolOpType X3 = gecode_BoolOpType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_389(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolOpType X3 = gecode_BoolOpType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_392(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_393(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_396(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_397(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_400(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVal X4 = gecode_FloatVal_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_402(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatRelType X3 = gecode_FloatRelType_from_term(YAP_ARG3); + FloatVar X4 = gecode_FloatVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_404(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_405(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_408(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_409(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_412(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + SetVar X4 = gecode_SetVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_414(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_416(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_418(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar X2 = gecode_SetVar_from_term(space,YAP_ARG2); + SetRelType X3 = gecode_SetRelType_from_term(YAP_ARG3); + SetVar X4 = gecode_SetVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_420(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_424(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_426(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_428(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_432(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_434(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntArgs X2 = gecode_IntArgs_from_term(YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_438(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_440(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_442(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_444(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + rel(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_388(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolOpType X3 = gecode_BoolOpType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + BoolVar X5 = gecode_BoolVar_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_390(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + BoolOpType X3 = gecode_BoolOpType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_394(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + BoolVar X4 = gecode_BoolVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_398(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_406(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + IntVar X4 = gecode_IntVar_from_term(space,YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_410(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + Reify X5 = gecode_Reify_from_term(YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + rel(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_421(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + rel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_rel_435(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntRelType X3 = gecode_IntRelType_from_term(YAP_ARG3); + rel(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_relax_445(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVarArgs X2 = gecode_SetVarArgs_from_term(space,YAP_ARG2); + SetVarArgs X3 = gecode_SetVarArgs_from_term(space,YAP_ARG3); + Rnd X4 = gecode_Rnd_from_term(YAP_ARG4); + double X5 = gecode_double_from_term(YAP_ARG5); + relax(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_sequence_446(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + sequence(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_sequence_448(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + sequence(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_sequence_447(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + sequence(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_sequence_449(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntSet X3 = gecode_IntSet_from_term(YAP_ARG3); + int X4 = gecode_int_from_term(YAP_ARG4); + int X5 = gecode_int_from_term(YAP_ARG5); + int X6 = gecode_int_from_term(YAP_ARG6); + IntPropLevel X7 = gecode_IntPropLevel_from_term(YAP_ARG7); + sequence(*space,X2,X3,X4,X5,X6,X7); + return TRUE; +} + +static YAP_Bool gecode_constraint_sorted_450(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + sorted(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_sorted_451(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + sorted(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_sorted_452(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + sorted(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_sorted_453(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + sorted(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqr_454(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + sqr(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqr_455(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + sqr(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqr_456(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + sqr(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqrt_457(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar X2 = gecode_FloatVar_from_term(space,YAP_ARG2); + FloatVar X3 = gecode_FloatVar_from_term(space,YAP_ARG3); + sqrt(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqrt_458(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + sqrt(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_sqrt_459(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar X2 = gecode_IntVar_from_term(space,YAP_ARG2); + IntVar X3 = gecode_IntVar_from_term(space,YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + sqrt(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_460(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + unary(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_461(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + unary(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_462(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + unary(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_464(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + unary(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_468(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + TaskTypeArgs X2 = gecode_TaskTypeArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + unary(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_463(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntArgs X3 = gecode_IntArgs_from_term(YAP_ARG3); + BoolVarArgs X4 = gecode_BoolVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + unary(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_465(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + unary(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_466(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + BoolVarArgs X5 = gecode_BoolVarArgs_from_term(space,YAP_ARG5); + unary(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_469(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + TaskTypeArgs X2 = gecode_TaskTypeArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + unary(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_470(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + TaskTypeArgs X2 = gecode_TaskTypeArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + BoolVarArgs X5 = gecode_BoolVarArgs_from_term(space,YAP_ARG5); + unary(*space,X2,X3,X4,X5); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_467(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntVarArgs X4 = gecode_IntVarArgs_from_term(space,YAP_ARG4); + BoolVarArgs X5 = gecode_BoolVarArgs_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + unary(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_unary_471(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + TaskTypeArgs X2 = gecode_TaskTypeArgs_from_term(YAP_ARG2); + IntVarArgs X3 = gecode_IntVarArgs_from_term(space,YAP_ARG3); + IntArgs X4 = gecode_IntArgs_from_term(YAP_ARG4); + BoolVarArgs X5 = gecode_BoolVarArgs_from_term(space,YAP_ARG5); + IntPropLevel X6 = gecode_IntPropLevel_from_term(YAP_ARG6); + unary(*space,X2,X3,X4,X5,X6); + return TRUE; +} + +static YAP_Bool gecode_constraint_unshare_472(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + unshare(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_unshare_474(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + unshare(*space,X2); + return TRUE; +} + +static YAP_Bool gecode_constraint_unshare_473(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVarArgs X2 = gecode_BoolVarArgs_from_term(space,YAP_ARG2); + IntPropLevel X3 = gecode_IntPropLevel_from_term(YAP_ARG3); + unshare(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_unshare_475(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVarArgs X2 = gecode_IntVarArgs_from_term(space,YAP_ARG2); + IntPropLevel X3 = gecode_IntPropLevel_from_term(YAP_ARG3); + unshare(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_when_476(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + std::function X3 = gecode_std_function_from_term(YAP_ARG3); + when(*space,X2,X3); + return TRUE; +} + +static YAP_Bool gecode_constraint_when_477(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + std::function X3 = gecode_std_function_from_term(YAP_ARG3); + IntPropLevel X4 = gecode_IntPropLevel_from_term(YAP_ARG4); + when(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_when_478(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + std::function X3 = gecode_std_function_from_term(YAP_ARG3); + std::function X4 = gecode_std_function_from_term(YAP_ARG4); + when(*space,X2,X3,X4); + return TRUE; +} + +static YAP_Bool gecode_constraint_when_479(void) +{ + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar X2 = gecode_BoolVar_from_term(space,YAP_ARG2); + std::function X3 = gecode_std_function_from_term(YAP_ARG3); + std::function X4 = gecode_std_function_from_term(YAP_ARG4); + IntPropLevel X5 = gecode_IntPropLevel_from_term(YAP_ARG5); + when(*space,X2,X3,X4,X5); + return TRUE; +} + diff --git a/packages/gecode/6.0.0/gecode_yap_cc_init_auto_generated.icc b/packages/gecode/6.0.0/gecode_yap_cc_init_auto_generated.icc new file mode 100644 index 000000000..d3bb3a66e --- /dev/null +++ b/packages/gecode/6.0.0/gecode_yap_cc_init_auto_generated.icc @@ -0,0 +1,681 @@ +// -*- c++ -*- +//============================================================================= +// Copyright (C) 2011 by Denys Duchier +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation, either version 3 of the License, or (at your +// option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +//============================================================================= + +{ YAP_Atom X= YAP_LookupAtom("RM_NONE"); + gecode_RM_NONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_CONSTANT"); + gecode_RM_CONSTANT = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_LINEAR"); + gecode_RM_LINEAR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_LUBY"); + gecode_RM_LUBY = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_GEOMETRIC"); + gecode_RM_GEOMETRIC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("FRT_EQ"); + gecode_FRT_EQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("FRT_NQ"); + gecode_FRT_NQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("FRT_LQ"); + gecode_FRT_LQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("FRT_LE"); + gecode_FRT_LE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("FRT_GQ"); + gecode_FRT_GQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("FRT_GR"); + gecode_FRT_GR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("RM_EQV"); + gecode_RM_EQV = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_IMP"); + gecode_RM_IMP = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("RM_PMI"); + gecode_RM_PMI = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("IRT_EQ"); + gecode_IRT_EQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IRT_NQ"); + gecode_IRT_NQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IRT_LQ"); + gecode_IRT_LQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IRT_LE"); + gecode_IRT_LE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IRT_GQ"); + gecode_IRT_GQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IRT_GR"); + gecode_IRT_GR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("BOT_AND"); + gecode_BOT_AND = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("BOT_OR"); + gecode_BOT_OR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("BOT_IMP"); + gecode_BOT_IMP = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("BOT_EQV"); + gecode_BOT_EQV = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("BOT_XOR"); + gecode_BOT_XOR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("IPL_DEF"); + gecode_IPL_DEF = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_VAL"); + gecode_IPL_VAL = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_BND"); + gecode_IPL_BND = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_DOM"); + gecode_IPL_DOM = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_SPEED"); + gecode_IPL_SPEED = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_MEMORY"); + gecode_IPL_MEMORY = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_BASIC"); + gecode_IPL_BASIC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_ADVANCED"); + gecode_IPL_ADVANCED = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("IPL_BASIC_ADVANCED"); + gecode_IPL_BASIC_ADVANCED = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("TT_FIXP"); + gecode_TT_FIXP = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TT_FIXS"); + gecode_TT_FIXS = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TT_FIXE"); + gecode_TT_FIXE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("TE_INIT"); + gecode_TE_INIT = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_PRUNE"); + gecode_TE_PRUNE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_FIX"); + gecode_TE_FIX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_FAIL"); + gecode_TE_FAIL = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_DONE"); + gecode_TE_DONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_PROPAGATE"); + gecode_TE_PROPAGATE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("TE_COMMIT"); + gecode_TE_COMMIT = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("SRT_EQ"); + gecode_SRT_EQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_NQ"); + gecode_SRT_NQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_SUB"); + gecode_SRT_SUB = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_SUP"); + gecode_SRT_SUP = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_DISJ"); + gecode_SRT_DISJ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_CMPL"); + gecode_SRT_CMPL = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_LQ"); + gecode_SRT_LQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_LE"); + gecode_SRT_LE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_GQ"); + gecode_SRT_GQ = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SRT_GR"); + gecode_SRT_GR = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +{ YAP_Atom X= YAP_LookupAtom("SOT_UNION"); + gecode_SOT_UNION = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SOT_DUNION"); + gecode_SOT_DUNION = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SOT_INTER"); + gecode_SOT_INTER = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +{ YAP_Atom X= YAP_LookupAtom("SOT_MINUS"); + gecode_SOT_MINUS = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + +YAP_UserCPredicate("gecode_constraint_branch_1", gecode_constraint_branch_1, 2); +YAP_UserCPredicate("gecode_constraint_convex_2", gecode_constraint_convex_2, 2); +YAP_UserCPredicate("gecode_constraint_convex_3", gecode_constraint_convex_3, 3); +YAP_UserCPredicate("gecode_constraint_abs_4", gecode_constraint_abs_4, 3); +YAP_UserCPredicate("gecode_constraint_abs_5", gecode_constraint_abs_5, 3); +YAP_UserCPredicate("gecode_constraint_abs_6", gecode_constraint_abs_6, 4); +YAP_UserCPredicate("gecode_constraint_argmax_7", gecode_constraint_argmax_7, 3); +YAP_UserCPredicate("gecode_constraint_argmax_8", gecode_constraint_argmax_8, 4); +YAP_UserCPredicate("gecode_constraint_argmax_10", gecode_constraint_argmax_10, 4); +YAP_UserCPredicate("gecode_constraint_argmax_9", gecode_constraint_argmax_9, 5); +YAP_UserCPredicate("gecode_constraint_argmax_11", gecode_constraint_argmax_11, 5); +YAP_UserCPredicate("gecode_constraint_argmax_12", gecode_constraint_argmax_12, 6); +YAP_UserCPredicate("gecode_constraint_argmin_13", gecode_constraint_argmin_13, 3); +YAP_UserCPredicate("gecode_constraint_argmin_14", gecode_constraint_argmin_14, 4); +YAP_UserCPredicate("gecode_constraint_argmin_16", gecode_constraint_argmin_16, 4); +YAP_UserCPredicate("gecode_constraint_argmin_15", gecode_constraint_argmin_15, 5); +YAP_UserCPredicate("gecode_constraint_argmin_17", gecode_constraint_argmin_17, 5); +YAP_UserCPredicate("gecode_constraint_argmin_18", gecode_constraint_argmin_18, 6); +YAP_UserCPredicate("gecode_constraint_assign_19", gecode_constraint_assign_19, 3); +YAP_UserCPredicate("gecode_constraint_assign_21", gecode_constraint_assign_21, 3); +YAP_UserCPredicate("gecode_constraint_assign_23", gecode_constraint_assign_23, 3); +YAP_UserCPredicate("gecode_constraint_assign_25", gecode_constraint_assign_25, 3); +YAP_UserCPredicate("gecode_constraint_assign_27", gecode_constraint_assign_27, 3); +YAP_UserCPredicate("gecode_constraint_assign_30", gecode_constraint_assign_30, 3); +YAP_UserCPredicate("gecode_constraint_assign_33", gecode_constraint_assign_33, 3); +YAP_UserCPredicate("gecode_constraint_assign_36", gecode_constraint_assign_36, 3); +YAP_UserCPredicate("gecode_constraint_assign_20", gecode_constraint_assign_20, 4); +YAP_UserCPredicate("gecode_constraint_assign_22", gecode_constraint_assign_22, 4); +YAP_UserCPredicate("gecode_constraint_assign_24", gecode_constraint_assign_24, 4); +YAP_UserCPredicate("gecode_constraint_assign_26", gecode_constraint_assign_26, 4); +YAP_UserCPredicate("gecode_constraint_assign_28", gecode_constraint_assign_28, 4); +YAP_UserCPredicate("gecode_constraint_assign_31", gecode_constraint_assign_31, 4); +YAP_UserCPredicate("gecode_constraint_assign_34", gecode_constraint_assign_34, 4); +YAP_UserCPredicate("gecode_constraint_assign_37", gecode_constraint_assign_37, 4); +YAP_UserCPredicate("gecode_constraint_assign_29", gecode_constraint_assign_29, 5); +YAP_UserCPredicate("gecode_constraint_assign_32", gecode_constraint_assign_32, 5); +YAP_UserCPredicate("gecode_constraint_assign_35", gecode_constraint_assign_35, 5); +YAP_UserCPredicate("gecode_constraint_assign_38", gecode_constraint_assign_38, 5); +YAP_UserCPredicate("gecode_constraint_binpacking_39", gecode_constraint_binpacking_39, 4); +YAP_UserCPredicate("gecode_constraint_binpacking_40", gecode_constraint_binpacking_40, 5); +YAP_UserCPredicate("gecode_constraint_branch_41", gecode_constraint_branch_41, 3); +YAP_UserCPredicate("gecode_constraint_branch_43", gecode_constraint_branch_43, 3); +YAP_UserCPredicate("gecode_constraint_branch_45", gecode_constraint_branch_45, 3); +YAP_UserCPredicate("gecode_constraint_branch_47", gecode_constraint_branch_47, 3); +YAP_UserCPredicate("gecode_constraint_branch_42", gecode_constraint_branch_42, 4); +YAP_UserCPredicate("gecode_constraint_branch_44", gecode_constraint_branch_44, 4); +YAP_UserCPredicate("gecode_constraint_branch_46", gecode_constraint_branch_46, 4); +YAP_UserCPredicate("gecode_constraint_branch_48", gecode_constraint_branch_48, 4); +YAP_UserCPredicate("gecode_constraint_branch_49", gecode_constraint_branch_49, 4); +YAP_UserCPredicate("gecode_constraint_branch_55", gecode_constraint_branch_55, 4); +YAP_UserCPredicate("gecode_constraint_branch_61", gecode_constraint_branch_61, 4); +YAP_UserCPredicate("gecode_constraint_branch_64", gecode_constraint_branch_64, 4); +YAP_UserCPredicate("gecode_constraint_branch_67", gecode_constraint_branch_67, 4); +YAP_UserCPredicate("gecode_constraint_branch_73", gecode_constraint_branch_73, 4); +YAP_UserCPredicate("gecode_constraint_branch_79", gecode_constraint_branch_79, 4); +YAP_UserCPredicate("gecode_constraint_branch_85", gecode_constraint_branch_85, 4); +YAP_UserCPredicate("gecode_constraint_branch_50", gecode_constraint_branch_50, 5); +YAP_UserCPredicate("gecode_constraint_branch_52", gecode_constraint_branch_52, 5); +YAP_UserCPredicate("gecode_constraint_branch_56", gecode_constraint_branch_56, 5); +YAP_UserCPredicate("gecode_constraint_branch_58", gecode_constraint_branch_58, 5); +YAP_UserCPredicate("gecode_constraint_branch_62", gecode_constraint_branch_62, 5); +YAP_UserCPredicate("gecode_constraint_branch_65", gecode_constraint_branch_65, 5); +YAP_UserCPredicate("gecode_constraint_branch_68", gecode_constraint_branch_68, 5); +YAP_UserCPredicate("gecode_constraint_branch_70", gecode_constraint_branch_70, 5); +YAP_UserCPredicate("gecode_constraint_branch_74", gecode_constraint_branch_74, 5); +YAP_UserCPredicate("gecode_constraint_branch_76", gecode_constraint_branch_76, 5); +YAP_UserCPredicate("gecode_constraint_branch_80", gecode_constraint_branch_80, 5); +YAP_UserCPredicate("gecode_constraint_branch_82", gecode_constraint_branch_82, 5); +YAP_UserCPredicate("gecode_constraint_branch_86", gecode_constraint_branch_86, 5); +YAP_UserCPredicate("gecode_constraint_branch_88", gecode_constraint_branch_88, 5); +YAP_UserCPredicate("gecode_constraint_branch_51", gecode_constraint_branch_51, 6); +YAP_UserCPredicate("gecode_constraint_branch_53", gecode_constraint_branch_53, 6); +YAP_UserCPredicate("gecode_constraint_branch_57", gecode_constraint_branch_57, 6); +YAP_UserCPredicate("gecode_constraint_branch_59", gecode_constraint_branch_59, 6); +YAP_UserCPredicate("gecode_constraint_branch_63", gecode_constraint_branch_63, 6); +YAP_UserCPredicate("gecode_constraint_branch_66", gecode_constraint_branch_66, 6); +YAP_UserCPredicate("gecode_constraint_branch_69", gecode_constraint_branch_69, 6); +YAP_UserCPredicate("gecode_constraint_branch_71", gecode_constraint_branch_71, 6); +YAP_UserCPredicate("gecode_constraint_branch_75", gecode_constraint_branch_75, 6); +YAP_UserCPredicate("gecode_constraint_branch_77", gecode_constraint_branch_77, 6); +YAP_UserCPredicate("gecode_constraint_branch_81", gecode_constraint_branch_81, 6); +YAP_UserCPredicate("gecode_constraint_branch_83", gecode_constraint_branch_83, 6); +YAP_UserCPredicate("gecode_constraint_branch_87", gecode_constraint_branch_87, 6); +YAP_UserCPredicate("gecode_constraint_branch_89", gecode_constraint_branch_89, 6); +YAP_UserCPredicate("gecode_constraint_branch_54", gecode_constraint_branch_54, 7); +YAP_UserCPredicate("gecode_constraint_branch_60", gecode_constraint_branch_60, 7); +YAP_UserCPredicate("gecode_constraint_branch_72", gecode_constraint_branch_72, 7); +YAP_UserCPredicate("gecode_constraint_branch_78", gecode_constraint_branch_78, 7); +YAP_UserCPredicate("gecode_constraint_branch_84", gecode_constraint_branch_84, 7); +YAP_UserCPredicate("gecode_constraint_branch_90", gecode_constraint_branch_90, 7); +YAP_UserCPredicate("gecode_constraint_cardinality_91", gecode_constraint_cardinality_91, 4); +YAP_UserCPredicate("gecode_constraint_cardinality_92", gecode_constraint_cardinality_92, 4); +YAP_UserCPredicate("gecode_constraint_channel_93", gecode_constraint_channel_93, 3); +YAP_UserCPredicate("gecode_constraint_channel_95", gecode_constraint_channel_95, 3); +YAP_UserCPredicate("gecode_constraint_channel_96", gecode_constraint_channel_96, 3); +YAP_UserCPredicate("gecode_constraint_channel_97", gecode_constraint_channel_97, 3); +YAP_UserCPredicate("gecode_constraint_channel_100", gecode_constraint_channel_100, 3); +YAP_UserCPredicate("gecode_constraint_channel_94", gecode_constraint_channel_94, 4); +YAP_UserCPredicate("gecode_constraint_channel_98", gecode_constraint_channel_98, 4); +YAP_UserCPredicate("gecode_constraint_channel_101", gecode_constraint_channel_101, 4); +YAP_UserCPredicate("gecode_constraint_channel_99", gecode_constraint_channel_99, 5); +YAP_UserCPredicate("gecode_constraint_channel_102", gecode_constraint_channel_102, 5); +YAP_UserCPredicate("gecode_constraint_channel_103", gecode_constraint_channel_103, 6); +YAP_UserCPredicate("gecode_constraint_circuit_104", gecode_constraint_circuit_104, 4); +YAP_UserCPredicate("gecode_constraint_circuit_115", gecode_constraint_circuit_115, 4); +YAP_UserCPredicate("gecode_constraint_circuit_105", gecode_constraint_circuit_105, 5); +YAP_UserCPredicate("gecode_constraint_circuit_106", gecode_constraint_circuit_106, 5); +YAP_UserCPredicate("gecode_constraint_circuit_108", gecode_constraint_circuit_108, 5); +YAP_UserCPredicate("gecode_constraint_circuit_107", gecode_constraint_circuit_107, 6); +YAP_UserCPredicate("gecode_constraint_circuit_109", gecode_constraint_circuit_109, 6); +YAP_UserCPredicate("gecode_constraint_circuit_110", gecode_constraint_circuit_110, 6); +YAP_UserCPredicate("gecode_constraint_circuit_111", gecode_constraint_circuit_111, 7); +YAP_UserCPredicate("gecode_constraint_circuit_112", gecode_constraint_circuit_112, 2); +YAP_UserCPredicate("gecode_constraint_circuit_113", gecode_constraint_circuit_113, 3); +YAP_UserCPredicate("gecode_constraint_circuit_114", gecode_constraint_circuit_114, 3); +YAP_UserCPredicate("gecode_constraint_clause_116", gecode_constraint_clause_116, 5); +YAP_UserCPredicate("gecode_constraint_clause_118", gecode_constraint_clause_118, 5); +YAP_UserCPredicate("gecode_constraint_clause_117", gecode_constraint_clause_117, 6); +YAP_UserCPredicate("gecode_constraint_clause_119", gecode_constraint_clause_119, 6); +YAP_UserCPredicate("gecode_constraint_count_120", gecode_constraint_count_120, 5); +YAP_UserCPredicate("gecode_constraint_count_122", gecode_constraint_count_122, 5); +YAP_UserCPredicate("gecode_constraint_count_124", gecode_constraint_count_124, 5); +YAP_UserCPredicate("gecode_constraint_count_126", gecode_constraint_count_126, 5); +YAP_UserCPredicate("gecode_constraint_count_128", gecode_constraint_count_128, 5); +YAP_UserCPredicate("gecode_constraint_count_130", gecode_constraint_count_130, 5); +YAP_UserCPredicate("gecode_constraint_count_133", gecode_constraint_count_133, 5); +YAP_UserCPredicate("gecode_constraint_count_137", gecode_constraint_count_137, 5); +YAP_UserCPredicate("gecode_constraint_count_141", gecode_constraint_count_141, 5); +YAP_UserCPredicate("gecode_constraint_count_142", gecode_constraint_count_142, 5); +YAP_UserCPredicate("gecode_constraint_count_144", gecode_constraint_count_144, 5); +YAP_UserCPredicate("gecode_constraint_count_121", gecode_constraint_count_121, 6); +YAP_UserCPredicate("gecode_constraint_count_123", gecode_constraint_count_123, 6); +YAP_UserCPredicate("gecode_constraint_count_125", gecode_constraint_count_125, 6); +YAP_UserCPredicate("gecode_constraint_count_127", gecode_constraint_count_127, 6); +YAP_UserCPredicate("gecode_constraint_count_129", gecode_constraint_count_129, 6); +YAP_UserCPredicate("gecode_constraint_count_131", gecode_constraint_count_131, 6); +YAP_UserCPredicate("gecode_constraint_count_143", gecode_constraint_count_143, 6); +YAP_UserCPredicate("gecode_constraint_count_145", gecode_constraint_count_145, 6); +YAP_UserCPredicate("gecode_constraint_count_132", gecode_constraint_count_132, 4); +YAP_UserCPredicate("gecode_constraint_count_135", gecode_constraint_count_135, 4); +YAP_UserCPredicate("gecode_constraint_count_136", gecode_constraint_count_136, 4); +YAP_UserCPredicate("gecode_constraint_count_139", gecode_constraint_count_139, 4); +YAP_UserCPredicate("gecode_constraint_count_140", gecode_constraint_count_140, 4); +YAP_UserCPredicate("gecode_constraint_count_134", gecode_constraint_count_134, 3); +YAP_UserCPredicate("gecode_constraint_count_138", gecode_constraint_count_138, 3); +YAP_UserCPredicate("gecode_constraint_cumulative_146", gecode_constraint_cumulative_146, 5); +YAP_UserCPredicate("gecode_constraint_cumulative_158", gecode_constraint_cumulative_158, 5); +YAP_UserCPredicate("gecode_constraint_cumulative_147", gecode_constraint_cumulative_147, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_148", gecode_constraint_cumulative_148, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_150", gecode_constraint_cumulative_150, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_154", gecode_constraint_cumulative_154, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_159", gecode_constraint_cumulative_159, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_160", gecode_constraint_cumulative_160, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_162", gecode_constraint_cumulative_162, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_166", gecode_constraint_cumulative_166, 6); +YAP_UserCPredicate("gecode_constraint_cumulative_149", gecode_constraint_cumulative_149, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_151", gecode_constraint_cumulative_151, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_152", gecode_constraint_cumulative_152, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_155", gecode_constraint_cumulative_155, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_156", gecode_constraint_cumulative_156, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_161", gecode_constraint_cumulative_161, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_163", gecode_constraint_cumulative_163, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_164", gecode_constraint_cumulative_164, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_167", gecode_constraint_cumulative_167, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_168", gecode_constraint_cumulative_168, 7); +YAP_UserCPredicate("gecode_constraint_cumulative_153", gecode_constraint_cumulative_153, 8); +YAP_UserCPredicate("gecode_constraint_cumulative_157", gecode_constraint_cumulative_157, 8); +YAP_UserCPredicate("gecode_constraint_cumulative_165", gecode_constraint_cumulative_165, 8); +YAP_UserCPredicate("gecode_constraint_cumulative_169", gecode_constraint_cumulative_169, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_170", gecode_constraint_cumulatives_170, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_172", gecode_constraint_cumulatives_172, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_174", gecode_constraint_cumulatives_174, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_176", gecode_constraint_cumulatives_176, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_178", gecode_constraint_cumulatives_178, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_180", gecode_constraint_cumulatives_180, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_182", gecode_constraint_cumulatives_182, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_184", gecode_constraint_cumulatives_184, 8); +YAP_UserCPredicate("gecode_constraint_cumulatives_171", gecode_constraint_cumulatives_171, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_173", gecode_constraint_cumulatives_173, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_175", gecode_constraint_cumulatives_175, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_177", gecode_constraint_cumulatives_177, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_179", gecode_constraint_cumulatives_179, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_181", gecode_constraint_cumulatives_181, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_183", gecode_constraint_cumulatives_183, 9); +YAP_UserCPredicate("gecode_constraint_cumulatives_185", gecode_constraint_cumulatives_185, 9); +YAP_UserCPredicate("gecode_constraint_distinct_186", gecode_constraint_distinct_186, 3); +YAP_UserCPredicate("gecode_constraint_distinct_188", gecode_constraint_distinct_188, 3); +YAP_UserCPredicate("gecode_constraint_distinct_191", gecode_constraint_distinct_191, 3); +YAP_UserCPredicate("gecode_constraint_distinct_192", gecode_constraint_distinct_192, 3); +YAP_UserCPredicate("gecode_constraint_distinct_187", gecode_constraint_distinct_187, 4); +YAP_UserCPredicate("gecode_constraint_distinct_189", gecode_constraint_distinct_189, 4); +YAP_UserCPredicate("gecode_constraint_distinct_193", gecode_constraint_distinct_193, 4); +YAP_UserCPredicate("gecode_constraint_distinct_190", gecode_constraint_distinct_190, 2); +YAP_UserCPredicate("gecode_constraint_div_194", gecode_constraint_div_194, 4); +YAP_UserCPredicate("gecode_constraint_div_195", gecode_constraint_div_195, 4); +YAP_UserCPredicate("gecode_constraint_div_196", gecode_constraint_div_196, 5); +YAP_UserCPredicate("gecode_constraint_divmod_197", gecode_constraint_divmod_197, 5); +YAP_UserCPredicate("gecode_constraint_divmod_198", gecode_constraint_divmod_198, 6); +YAP_UserCPredicate("gecode_constraint_dom_199", gecode_constraint_dom_199, 3); +YAP_UserCPredicate("gecode_constraint_dom_203", gecode_constraint_dom_203, 3); +YAP_UserCPredicate("gecode_constraint_dom_205", gecode_constraint_dom_205, 3); +YAP_UserCPredicate("gecode_constraint_dom_206", gecode_constraint_dom_206, 3); +YAP_UserCPredicate("gecode_constraint_dom_208", gecode_constraint_dom_208, 3); +YAP_UserCPredicate("gecode_constraint_dom_212", gecode_constraint_dom_212, 3); +YAP_UserCPredicate("gecode_constraint_dom_226", gecode_constraint_dom_226, 3); +YAP_UserCPredicate("gecode_constraint_dom_227", gecode_constraint_dom_227, 3); +YAP_UserCPredicate("gecode_constraint_dom_230", gecode_constraint_dom_230, 3); +YAP_UserCPredicate("gecode_constraint_dom_231", gecode_constraint_dom_231, 3); +YAP_UserCPredicate("gecode_constraint_dom_232", gecode_constraint_dom_232, 3); +YAP_UserCPredicate("gecode_constraint_dom_234", gecode_constraint_dom_234, 3); +YAP_UserCPredicate("gecode_constraint_dom_236", gecode_constraint_dom_236, 3); +YAP_UserCPredicate("gecode_constraint_dom_243", gecode_constraint_dom_243, 3); +YAP_UserCPredicate("gecode_constraint_dom_200", gecode_constraint_dom_200, 4); +YAP_UserCPredicate("gecode_constraint_dom_201", gecode_constraint_dom_201, 4); +YAP_UserCPredicate("gecode_constraint_dom_204", gecode_constraint_dom_204, 4); +YAP_UserCPredicate("gecode_constraint_dom_207", gecode_constraint_dom_207, 4); +YAP_UserCPredicate("gecode_constraint_dom_209", gecode_constraint_dom_209, 4); +YAP_UserCPredicate("gecode_constraint_dom_210", gecode_constraint_dom_210, 4); +YAP_UserCPredicate("gecode_constraint_dom_213", gecode_constraint_dom_213, 4); +YAP_UserCPredicate("gecode_constraint_dom_214", gecode_constraint_dom_214, 4); +YAP_UserCPredicate("gecode_constraint_dom_216", gecode_constraint_dom_216, 4); +YAP_UserCPredicate("gecode_constraint_dom_220", gecode_constraint_dom_220, 4); +YAP_UserCPredicate("gecode_constraint_dom_222", gecode_constraint_dom_222, 4); +YAP_UserCPredicate("gecode_constraint_dom_228", gecode_constraint_dom_228, 4); +YAP_UserCPredicate("gecode_constraint_dom_229", gecode_constraint_dom_229, 4); +YAP_UserCPredicate("gecode_constraint_dom_233", gecode_constraint_dom_233, 4); +YAP_UserCPredicate("gecode_constraint_dom_235", gecode_constraint_dom_235, 4); +YAP_UserCPredicate("gecode_constraint_dom_237", gecode_constraint_dom_237, 4); +YAP_UserCPredicate("gecode_constraint_dom_238", gecode_constraint_dom_238, 4); +YAP_UserCPredicate("gecode_constraint_dom_240", gecode_constraint_dom_240, 4); +YAP_UserCPredicate("gecode_constraint_dom_241", gecode_constraint_dom_241, 4); +YAP_UserCPredicate("gecode_constraint_dom_202", gecode_constraint_dom_202, 5); +YAP_UserCPredicate("gecode_constraint_dom_211", gecode_constraint_dom_211, 5); +YAP_UserCPredicate("gecode_constraint_dom_215", gecode_constraint_dom_215, 5); +YAP_UserCPredicate("gecode_constraint_dom_217", gecode_constraint_dom_217, 5); +YAP_UserCPredicate("gecode_constraint_dom_218", gecode_constraint_dom_218, 5); +YAP_UserCPredicate("gecode_constraint_dom_221", gecode_constraint_dom_221, 5); +YAP_UserCPredicate("gecode_constraint_dom_223", gecode_constraint_dom_223, 5); +YAP_UserCPredicate("gecode_constraint_dom_224", gecode_constraint_dom_224, 5); +YAP_UserCPredicate("gecode_constraint_dom_239", gecode_constraint_dom_239, 5); +YAP_UserCPredicate("gecode_constraint_dom_242", gecode_constraint_dom_242, 5); +YAP_UserCPredicate("gecode_constraint_dom_219", gecode_constraint_dom_219, 6); +YAP_UserCPredicate("gecode_constraint_dom_225", gecode_constraint_dom_225, 6); +YAP_UserCPredicate("gecode_constraint_element_244", gecode_constraint_element_244, 4); +YAP_UserCPredicate("gecode_constraint_element_246", gecode_constraint_element_246, 4); +YAP_UserCPredicate("gecode_constraint_element_248", gecode_constraint_element_248, 4); +YAP_UserCPredicate("gecode_constraint_element_254", gecode_constraint_element_254, 4); +YAP_UserCPredicate("gecode_constraint_element_256", gecode_constraint_element_256, 4); +YAP_UserCPredicate("gecode_constraint_element_260", gecode_constraint_element_260, 4); +YAP_UserCPredicate("gecode_constraint_element_262", gecode_constraint_element_262, 4); +YAP_UserCPredicate("gecode_constraint_element_245", gecode_constraint_element_245, 5); +YAP_UserCPredicate("gecode_constraint_element_247", gecode_constraint_element_247, 5); +YAP_UserCPredicate("gecode_constraint_element_249", gecode_constraint_element_249, 5); +YAP_UserCPredicate("gecode_constraint_element_255", gecode_constraint_element_255, 5); +YAP_UserCPredicate("gecode_constraint_element_257", gecode_constraint_element_257, 5); +YAP_UserCPredicate("gecode_constraint_element_261", gecode_constraint_element_261, 5); +YAP_UserCPredicate("gecode_constraint_element_263", gecode_constraint_element_263, 5); +YAP_UserCPredicate("gecode_constraint_element_250", gecode_constraint_element_250, 7); +YAP_UserCPredicate("gecode_constraint_element_252", gecode_constraint_element_252, 7); +YAP_UserCPredicate("gecode_constraint_element_258", gecode_constraint_element_258, 7); +YAP_UserCPredicate("gecode_constraint_element_264", gecode_constraint_element_264, 7); +YAP_UserCPredicate("gecode_constraint_element_251", gecode_constraint_element_251, 8); +YAP_UserCPredicate("gecode_constraint_element_253", gecode_constraint_element_253, 8); +YAP_UserCPredicate("gecode_constraint_element_259", gecode_constraint_element_259, 8); +YAP_UserCPredicate("gecode_constraint_element_265", gecode_constraint_element_265, 8); +YAP_UserCPredicate("gecode_constraint_extensional_266", gecode_constraint_extensional_266, 3); +YAP_UserCPredicate("gecode_constraint_extensional_268", gecode_constraint_extensional_268, 3); +YAP_UserCPredicate("gecode_constraint_extensional_270", gecode_constraint_extensional_270, 3); +YAP_UserCPredicate("gecode_constraint_extensional_272", gecode_constraint_extensional_272, 3); +YAP_UserCPredicate("gecode_constraint_extensional_267", gecode_constraint_extensional_267, 4); +YAP_UserCPredicate("gecode_constraint_extensional_269", gecode_constraint_extensional_269, 4); +YAP_UserCPredicate("gecode_constraint_extensional_271", gecode_constraint_extensional_271, 4); +YAP_UserCPredicate("gecode_constraint_extensional_273", gecode_constraint_extensional_273, 4); +YAP_UserCPredicate("gecode_constraint_ite_274", gecode_constraint_ite_274, 5); +YAP_UserCPredicate("gecode_constraint_ite_276", gecode_constraint_ite_276, 5); +YAP_UserCPredicate("gecode_constraint_ite_277", gecode_constraint_ite_277, 5); +YAP_UserCPredicate("gecode_constraint_ite_279", gecode_constraint_ite_279, 5); +YAP_UserCPredicate("gecode_constraint_ite_275", gecode_constraint_ite_275, 6); +YAP_UserCPredicate("gecode_constraint_ite_278", gecode_constraint_ite_278, 6); +YAP_UserCPredicate("gecode_constraint_linear_280", gecode_constraint_linear_280, 4); +YAP_UserCPredicate("gecode_constraint_linear_284", gecode_constraint_linear_284, 4); +YAP_UserCPredicate("gecode_constraint_linear_292", gecode_constraint_linear_292, 4); +YAP_UserCPredicate("gecode_constraint_linear_294", gecode_constraint_linear_294, 4); +YAP_UserCPredicate("gecode_constraint_linear_312", gecode_constraint_linear_312, 4); +YAP_UserCPredicate("gecode_constraint_linear_316", gecode_constraint_linear_316, 4); +YAP_UserCPredicate("gecode_constraint_linear_281", gecode_constraint_linear_281, 5); +YAP_UserCPredicate("gecode_constraint_linear_282", gecode_constraint_linear_282, 5); +YAP_UserCPredicate("gecode_constraint_linear_285", gecode_constraint_linear_285, 5); +YAP_UserCPredicate("gecode_constraint_linear_286", gecode_constraint_linear_286, 5); +YAP_UserCPredicate("gecode_constraint_linear_288", gecode_constraint_linear_288, 5); +YAP_UserCPredicate("gecode_constraint_linear_290", gecode_constraint_linear_290, 5); +YAP_UserCPredicate("gecode_constraint_linear_293", gecode_constraint_linear_293, 5); +YAP_UserCPredicate("gecode_constraint_linear_295", gecode_constraint_linear_295, 5); +YAP_UserCPredicate("gecode_constraint_linear_296", gecode_constraint_linear_296, 5); +YAP_UserCPredicate("gecode_constraint_linear_300", gecode_constraint_linear_300, 5); +YAP_UserCPredicate("gecode_constraint_linear_304", gecode_constraint_linear_304, 5); +YAP_UserCPredicate("gecode_constraint_linear_308", gecode_constraint_linear_308, 5); +YAP_UserCPredicate("gecode_constraint_linear_313", gecode_constraint_linear_313, 5); +YAP_UserCPredicate("gecode_constraint_linear_314", gecode_constraint_linear_314, 5); +YAP_UserCPredicate("gecode_constraint_linear_317", gecode_constraint_linear_317, 5); +YAP_UserCPredicate("gecode_constraint_linear_318", gecode_constraint_linear_318, 5); +YAP_UserCPredicate("gecode_constraint_linear_283", gecode_constraint_linear_283, 6); +YAP_UserCPredicate("gecode_constraint_linear_287", gecode_constraint_linear_287, 6); +YAP_UserCPredicate("gecode_constraint_linear_289", gecode_constraint_linear_289, 6); +YAP_UserCPredicate("gecode_constraint_linear_291", gecode_constraint_linear_291, 6); +YAP_UserCPredicate("gecode_constraint_linear_297", gecode_constraint_linear_297, 6); +YAP_UserCPredicate("gecode_constraint_linear_298", gecode_constraint_linear_298, 6); +YAP_UserCPredicate("gecode_constraint_linear_301", gecode_constraint_linear_301, 6); +YAP_UserCPredicate("gecode_constraint_linear_302", gecode_constraint_linear_302, 6); +YAP_UserCPredicate("gecode_constraint_linear_305", gecode_constraint_linear_305, 6); +YAP_UserCPredicate("gecode_constraint_linear_306", gecode_constraint_linear_306, 6); +YAP_UserCPredicate("gecode_constraint_linear_309", gecode_constraint_linear_309, 6); +YAP_UserCPredicate("gecode_constraint_linear_310", gecode_constraint_linear_310, 6); +YAP_UserCPredicate("gecode_constraint_linear_315", gecode_constraint_linear_315, 6); +YAP_UserCPredicate("gecode_constraint_linear_319", gecode_constraint_linear_319, 6); +YAP_UserCPredicate("gecode_constraint_linear_299", gecode_constraint_linear_299, 7); +YAP_UserCPredicate("gecode_constraint_linear_303", gecode_constraint_linear_303, 7); +YAP_UserCPredicate("gecode_constraint_linear_307", gecode_constraint_linear_307, 7); +YAP_UserCPredicate("gecode_constraint_linear_311", gecode_constraint_linear_311, 7); +YAP_UserCPredicate("gecode_constraint_max_320", gecode_constraint_max_320, 4); +YAP_UserCPredicate("gecode_constraint_max_321", gecode_constraint_max_321, 4); +YAP_UserCPredicate("gecode_constraint_max_325", gecode_constraint_max_325, 4); +YAP_UserCPredicate("gecode_constraint_max_322", gecode_constraint_max_322, 5); +YAP_UserCPredicate("gecode_constraint_max_323", gecode_constraint_max_323, 3); +YAP_UserCPredicate("gecode_constraint_max_324", gecode_constraint_max_324, 3); +YAP_UserCPredicate("gecode_constraint_member_326", gecode_constraint_member_326, 3); +YAP_UserCPredicate("gecode_constraint_member_330", gecode_constraint_member_330, 3); +YAP_UserCPredicate("gecode_constraint_member_327", gecode_constraint_member_327, 4); +YAP_UserCPredicate("gecode_constraint_member_328", gecode_constraint_member_328, 4); +YAP_UserCPredicate("gecode_constraint_member_331", gecode_constraint_member_331, 4); +YAP_UserCPredicate("gecode_constraint_member_332", gecode_constraint_member_332, 4); +YAP_UserCPredicate("gecode_constraint_member_329", gecode_constraint_member_329, 5); +YAP_UserCPredicate("gecode_constraint_member_333", gecode_constraint_member_333, 5); +YAP_UserCPredicate("gecode_constraint_min_334", gecode_constraint_min_334, 4); +YAP_UserCPredicate("gecode_constraint_min_335", gecode_constraint_min_335, 4); +YAP_UserCPredicate("gecode_constraint_min_339", gecode_constraint_min_339, 4); +YAP_UserCPredicate("gecode_constraint_min_336", gecode_constraint_min_336, 5); +YAP_UserCPredicate("gecode_constraint_min_337", gecode_constraint_min_337, 3); +YAP_UserCPredicate("gecode_constraint_min_338", gecode_constraint_min_338, 3); +YAP_UserCPredicate("gecode_constraint_mod_340", gecode_constraint_mod_340, 4); +YAP_UserCPredicate("gecode_constraint_mod_341", gecode_constraint_mod_341, 5); +YAP_UserCPredicate("gecode_constraint_mult_342", gecode_constraint_mult_342, 4); +YAP_UserCPredicate("gecode_constraint_mult_343", gecode_constraint_mult_343, 4); +YAP_UserCPredicate("gecode_constraint_mult_344", gecode_constraint_mult_344, 5); +YAP_UserCPredicate("gecode_constraint_nooverlap_345", gecode_constraint_nooverlap_345, 5); +YAP_UserCPredicate("gecode_constraint_nooverlap_346", gecode_constraint_nooverlap_346, 6); +YAP_UserCPredicate("gecode_constraint_nooverlap_347", gecode_constraint_nooverlap_347, 6); +YAP_UserCPredicate("gecode_constraint_nooverlap_348", gecode_constraint_nooverlap_348, 7); +YAP_UserCPredicate("gecode_constraint_nooverlap_349", gecode_constraint_nooverlap_349, 7); +YAP_UserCPredicate("gecode_constraint_nooverlap_350", gecode_constraint_nooverlap_350, 8); +YAP_UserCPredicate("gecode_constraint_nooverlap_351", gecode_constraint_nooverlap_351, 8); +YAP_UserCPredicate("gecode_constraint_nooverlap_352", gecode_constraint_nooverlap_352, 9); +YAP_UserCPredicate("gecode_constraint_nroot_353", gecode_constraint_nroot_353, 4); +YAP_UserCPredicate("gecode_constraint_nroot_354", gecode_constraint_nroot_354, 4); +YAP_UserCPredicate("gecode_constraint_nroot_355", gecode_constraint_nroot_355, 5); +YAP_UserCPredicate("gecode_constraint_nvalues_356", gecode_constraint_nvalues_356, 4); +YAP_UserCPredicate("gecode_constraint_nvalues_358", gecode_constraint_nvalues_358, 4); +YAP_UserCPredicate("gecode_constraint_nvalues_360", gecode_constraint_nvalues_360, 4); +YAP_UserCPredicate("gecode_constraint_nvalues_362", gecode_constraint_nvalues_362, 4); +YAP_UserCPredicate("gecode_constraint_nvalues_357", gecode_constraint_nvalues_357, 5); +YAP_UserCPredicate("gecode_constraint_nvalues_359", gecode_constraint_nvalues_359, 5); +YAP_UserCPredicate("gecode_constraint_nvalues_361", gecode_constraint_nvalues_361, 5); +YAP_UserCPredicate("gecode_constraint_nvalues_363", gecode_constraint_nvalues_363, 5); +YAP_UserCPredicate("gecode_constraint_path_364", gecode_constraint_path_364, 6); +YAP_UserCPredicate("gecode_constraint_path_375", gecode_constraint_path_375, 6); +YAP_UserCPredicate("gecode_constraint_path_365", gecode_constraint_path_365, 7); +YAP_UserCPredicate("gecode_constraint_path_366", gecode_constraint_path_366, 7); +YAP_UserCPredicate("gecode_constraint_path_368", gecode_constraint_path_368, 7); +YAP_UserCPredicate("gecode_constraint_path_367", gecode_constraint_path_367, 8); +YAP_UserCPredicate("gecode_constraint_path_369", gecode_constraint_path_369, 8); +YAP_UserCPredicate("gecode_constraint_path_370", gecode_constraint_path_370, 8); +YAP_UserCPredicate("gecode_constraint_path_371", gecode_constraint_path_371, 9); +YAP_UserCPredicate("gecode_constraint_path_372", gecode_constraint_path_372, 4); +YAP_UserCPredicate("gecode_constraint_path_373", gecode_constraint_path_373, 5); +YAP_UserCPredicate("gecode_constraint_path_374", gecode_constraint_path_374, 5); +YAP_UserCPredicate("gecode_constraint_pow_376", gecode_constraint_pow_376, 4); +YAP_UserCPredicate("gecode_constraint_pow_377", gecode_constraint_pow_377, 4); +YAP_UserCPredicate("gecode_constraint_pow_378", gecode_constraint_pow_378, 5); +YAP_UserCPredicate("gecode_constraint_precede_379", gecode_constraint_precede_379, 3); +YAP_UserCPredicate("gecode_constraint_precede_380", gecode_constraint_precede_380, 4); +YAP_UserCPredicate("gecode_constraint_precede_381", gecode_constraint_precede_381, 4); +YAP_UserCPredicate("gecode_constraint_precede_382", gecode_constraint_precede_382, 5); +YAP_UserCPredicate("gecode_constraint_rel_383", gecode_constraint_rel_383, 4); +YAP_UserCPredicate("gecode_constraint_rel_385", gecode_constraint_rel_385, 4); +YAP_UserCPredicate("gecode_constraint_rel_391", gecode_constraint_rel_391, 4); +YAP_UserCPredicate("gecode_constraint_rel_395", gecode_constraint_rel_395, 4); +YAP_UserCPredicate("gecode_constraint_rel_399", gecode_constraint_rel_399, 4); +YAP_UserCPredicate("gecode_constraint_rel_401", gecode_constraint_rel_401, 4); +YAP_UserCPredicate("gecode_constraint_rel_403", gecode_constraint_rel_403, 4); +YAP_UserCPredicate("gecode_constraint_rel_407", gecode_constraint_rel_407, 4); +YAP_UserCPredicate("gecode_constraint_rel_411", gecode_constraint_rel_411, 4); +YAP_UserCPredicate("gecode_constraint_rel_413", gecode_constraint_rel_413, 4); +YAP_UserCPredicate("gecode_constraint_rel_415", gecode_constraint_rel_415, 4); +YAP_UserCPredicate("gecode_constraint_rel_417", gecode_constraint_rel_417, 4); +YAP_UserCPredicate("gecode_constraint_rel_419", gecode_constraint_rel_419, 4); +YAP_UserCPredicate("gecode_constraint_rel_422", gecode_constraint_rel_422, 4); +YAP_UserCPredicate("gecode_constraint_rel_423", gecode_constraint_rel_423, 4); +YAP_UserCPredicate("gecode_constraint_rel_425", gecode_constraint_rel_425, 4); +YAP_UserCPredicate("gecode_constraint_rel_427", gecode_constraint_rel_427, 4); +YAP_UserCPredicate("gecode_constraint_rel_429", gecode_constraint_rel_429, 4); +YAP_UserCPredicate("gecode_constraint_rel_430", gecode_constraint_rel_430, 4); +YAP_UserCPredicate("gecode_constraint_rel_431", gecode_constraint_rel_431, 4); +YAP_UserCPredicate("gecode_constraint_rel_433", gecode_constraint_rel_433, 4); +YAP_UserCPredicate("gecode_constraint_rel_436", gecode_constraint_rel_436, 4); +YAP_UserCPredicate("gecode_constraint_rel_437", gecode_constraint_rel_437, 4); +YAP_UserCPredicate("gecode_constraint_rel_439", gecode_constraint_rel_439, 4); +YAP_UserCPredicate("gecode_constraint_rel_441", gecode_constraint_rel_441, 4); +YAP_UserCPredicate("gecode_constraint_rel_443", gecode_constraint_rel_443, 4); +YAP_UserCPredicate("gecode_constraint_rel_384", gecode_constraint_rel_384, 5); +YAP_UserCPredicate("gecode_constraint_rel_386", gecode_constraint_rel_386, 5); +YAP_UserCPredicate("gecode_constraint_rel_387", gecode_constraint_rel_387, 5); +YAP_UserCPredicate("gecode_constraint_rel_389", gecode_constraint_rel_389, 5); +YAP_UserCPredicate("gecode_constraint_rel_392", gecode_constraint_rel_392, 5); +YAP_UserCPredicate("gecode_constraint_rel_393", gecode_constraint_rel_393, 5); +YAP_UserCPredicate("gecode_constraint_rel_396", gecode_constraint_rel_396, 5); +YAP_UserCPredicate("gecode_constraint_rel_397", gecode_constraint_rel_397, 5); +YAP_UserCPredicate("gecode_constraint_rel_400", gecode_constraint_rel_400, 5); +YAP_UserCPredicate("gecode_constraint_rel_402", gecode_constraint_rel_402, 5); +YAP_UserCPredicate("gecode_constraint_rel_404", gecode_constraint_rel_404, 5); +YAP_UserCPredicate("gecode_constraint_rel_405", gecode_constraint_rel_405, 5); +YAP_UserCPredicate("gecode_constraint_rel_408", gecode_constraint_rel_408, 5); +YAP_UserCPredicate("gecode_constraint_rel_409", gecode_constraint_rel_409, 5); +YAP_UserCPredicate("gecode_constraint_rel_412", gecode_constraint_rel_412, 5); +YAP_UserCPredicate("gecode_constraint_rel_414", gecode_constraint_rel_414, 5); +YAP_UserCPredicate("gecode_constraint_rel_416", gecode_constraint_rel_416, 5); +YAP_UserCPredicate("gecode_constraint_rel_418", gecode_constraint_rel_418, 5); +YAP_UserCPredicate("gecode_constraint_rel_420", gecode_constraint_rel_420, 5); +YAP_UserCPredicate("gecode_constraint_rel_424", gecode_constraint_rel_424, 5); +YAP_UserCPredicate("gecode_constraint_rel_426", gecode_constraint_rel_426, 5); +YAP_UserCPredicate("gecode_constraint_rel_428", gecode_constraint_rel_428, 5); +YAP_UserCPredicate("gecode_constraint_rel_432", gecode_constraint_rel_432, 5); +YAP_UserCPredicate("gecode_constraint_rel_434", gecode_constraint_rel_434, 5); +YAP_UserCPredicate("gecode_constraint_rel_438", gecode_constraint_rel_438, 5); +YAP_UserCPredicate("gecode_constraint_rel_440", gecode_constraint_rel_440, 5); +YAP_UserCPredicate("gecode_constraint_rel_442", gecode_constraint_rel_442, 5); +YAP_UserCPredicate("gecode_constraint_rel_444", gecode_constraint_rel_444, 5); +YAP_UserCPredicate("gecode_constraint_rel_388", gecode_constraint_rel_388, 6); +YAP_UserCPredicate("gecode_constraint_rel_390", gecode_constraint_rel_390, 6); +YAP_UserCPredicate("gecode_constraint_rel_394", gecode_constraint_rel_394, 6); +YAP_UserCPredicate("gecode_constraint_rel_398", gecode_constraint_rel_398, 6); +YAP_UserCPredicate("gecode_constraint_rel_406", gecode_constraint_rel_406, 6); +YAP_UserCPredicate("gecode_constraint_rel_410", gecode_constraint_rel_410, 6); +YAP_UserCPredicate("gecode_constraint_rel_421", gecode_constraint_rel_421, 3); +YAP_UserCPredicate("gecode_constraint_rel_435", gecode_constraint_rel_435, 3); +YAP_UserCPredicate("gecode_constraint_relax_445", gecode_constraint_relax_445, 5); +YAP_UserCPredicate("gecode_constraint_sequence_446", gecode_constraint_sequence_446, 6); +YAP_UserCPredicate("gecode_constraint_sequence_448", gecode_constraint_sequence_448, 6); +YAP_UserCPredicate("gecode_constraint_sequence_447", gecode_constraint_sequence_447, 7); +YAP_UserCPredicate("gecode_constraint_sequence_449", gecode_constraint_sequence_449, 7); +YAP_UserCPredicate("gecode_constraint_sorted_450", gecode_constraint_sorted_450, 3); +YAP_UserCPredicate("gecode_constraint_sorted_451", gecode_constraint_sorted_451, 4); +YAP_UserCPredicate("gecode_constraint_sorted_452", gecode_constraint_sorted_452, 4); +YAP_UserCPredicate("gecode_constraint_sorted_453", gecode_constraint_sorted_453, 5); +YAP_UserCPredicate("gecode_constraint_sqr_454", gecode_constraint_sqr_454, 3); +YAP_UserCPredicate("gecode_constraint_sqr_455", gecode_constraint_sqr_455, 3); +YAP_UserCPredicate("gecode_constraint_sqr_456", gecode_constraint_sqr_456, 4); +YAP_UserCPredicate("gecode_constraint_sqrt_457", gecode_constraint_sqrt_457, 3); +YAP_UserCPredicate("gecode_constraint_sqrt_458", gecode_constraint_sqrt_458, 3); +YAP_UserCPredicate("gecode_constraint_sqrt_459", gecode_constraint_sqrt_459, 4); +YAP_UserCPredicate("gecode_constraint_unary_460", gecode_constraint_unary_460, 3); +YAP_UserCPredicate("gecode_constraint_unary_461", gecode_constraint_unary_461, 4); +YAP_UserCPredicate("gecode_constraint_unary_462", gecode_constraint_unary_462, 4); +YAP_UserCPredicate("gecode_constraint_unary_464", gecode_constraint_unary_464, 4); +YAP_UserCPredicate("gecode_constraint_unary_468", gecode_constraint_unary_468, 4); +YAP_UserCPredicate("gecode_constraint_unary_463", gecode_constraint_unary_463, 5); +YAP_UserCPredicate("gecode_constraint_unary_465", gecode_constraint_unary_465, 5); +YAP_UserCPredicate("gecode_constraint_unary_466", gecode_constraint_unary_466, 5); +YAP_UserCPredicate("gecode_constraint_unary_469", gecode_constraint_unary_469, 5); +YAP_UserCPredicate("gecode_constraint_unary_470", gecode_constraint_unary_470, 5); +YAP_UserCPredicate("gecode_constraint_unary_467", gecode_constraint_unary_467, 6); +YAP_UserCPredicate("gecode_constraint_unary_471", gecode_constraint_unary_471, 6); +YAP_UserCPredicate("gecode_constraint_unshare_472", gecode_constraint_unshare_472, 2); +YAP_UserCPredicate("gecode_constraint_unshare_474", gecode_constraint_unshare_474, 2); +YAP_UserCPredicate("gecode_constraint_unshare_473", gecode_constraint_unshare_473, 3); +YAP_UserCPredicate("gecode_constraint_unshare_475", gecode_constraint_unshare_475, 3); +YAP_UserCPredicate("gecode_constraint_when_476", gecode_constraint_when_476, 3); +YAP_UserCPredicate("gecode_constraint_when_477", gecode_constraint_when_477, 4); +YAP_UserCPredicate("gecode_constraint_when_478", gecode_constraint_when_478, 4); +YAP_UserCPredicate("gecode_constraint_when_479", gecode_constraint_when_479, 5); diff --git a/packages/gecode/gecode6-common.icc b/packages/gecode/gecode6-common.icc new file mode 100644 index 000000000..a912c5d1d --- /dev/null +++ b/packages/gecode/gecode6-common.icc @@ -0,0 +1,436 @@ +// -*- c++ -*- +//============================================================================= +// Copyright (C) 2011 by Denys Duchier +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation, either version 3 of the License, or (at your +// option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +//============================================================================= + +#ifndef GECODE_COMMON +#define GECODE_COMMON + +#if defined(_MSC_VER) || defined(__MINGW32__) +#define __i386__ 1 +#if __x86_64__ +#define _WIN64 1 +#define _AMD64_ 1 +#endif +#include +#endif + + +#include "gecode/driver.hh" +#include "gecode/int.hh" +#include "gecode/set.hh" +#include "gecode/search.hh" +#include + +namespace generic_gecode +{ + using namespace std; + using namespace Gecode; + + // description of the optimization criterion + struct Optimizing + { + enum What { OPT_NONE, OPT_INT, OPT_RATIO }; + enum How { OPT_MIN, OPT_MAX }; + int num; + int den; + What what; + How how; + Optimizing(): num(-1), den(-1), what(OPT_NONE), how(OPT_MAX) {} + Optimizing(Optimizing& o) + : num(o.num), den(o.den), what(o.what), how(o.how) {} + void check_ok() const + { if (what!=OPT_NONE) + throw Exception("gecode-python","too many optimization criteria"); } + void maximize(int i) + { check_ok(); what = OPT_INT; how = OPT_MAX; num = i; }; + void maximize(int i,int j) + { check_ok(); what = OPT_RATIO; how = OPT_MAX; num = i; den = j; }; + void minimize(int i) + { check_ok(); what = OPT_INT; how = OPT_MIN; num = i; }; + void minimize(int i,int j) + { check_ok(); what = OPT_RATIO; how = OPT_MIN; num = i; den = j; }; + }; + + class GenericSpace; + + + struct GenericEngine + { + GenericSpace* next(void); + // virtual ~GenericEngine() {}; + }; + + struct GenericDFS: GenericEngine + { + DFS engine; + GenericDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + GenericSpace* next(void) { return engine.next(); } + }; + + struct GenericRestartDFS: GenericEngine + { + RBS engine; + GenericRestartDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + GenericSpace* next(void) { return engine.next(); } + }; + + + + struct GenericBAB: GenericEngine + { + BAB engine; + GenericBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + GenericSpace* next(void) { return engine.next(); } + }; + + struct GenericRestartBAB: GenericEngine + { + RBS engine; + GenericRestartBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + GenericSpace* next(void) { return engine.next(); } + }; + +#ifdef OLD + struct GenericRestart: GenericEngine + { + Restart engine; + GenericRestart(GenericSpace* s,Search::Options& opt): engine(s,opt) {} + virtual GenericSpace* next(void) { return engine.next(); } + }; +#endif + + struct LoadingDock + { + vector ivars; + vector bvars; + vector fvars; + vector svars; + vector ikeep; + vector bkeep; + vector fkeep; + vector skeep; + + bool keeping_some() const + { + return (ikeep.size() != 0) + || (bkeep.size() != 0) + || (fkeep.size() != 0) + || (skeep.size() != 0); + } + + IntVar get_ivar(int i) const { return ivars[i]; } + BoolVar get_bvar(int i) const { return bvars[i]; } + FloatVar get_fvar(int i) const { return fvars[i]; } + SetVar get_svar(int i) const { return svars[i]; } + + int enter_ivar(const IntVar& v) + { ivars.push_back(v); return static_cast(ivars.size()-1); } + + int enter_bvar(const BoolVar& v) + { bvars.push_back(v); return static_cast(bvars.size()-1); } + + int enter_fvar(const FloatVar& v) + { fvars.push_back(v); return static_cast(fvars.size()-1); } + + int enter_svar(const SetVar& v) + { svars.push_back(v); return static_cast(svars.size()-1); } + + int keep_ivar(int i) { ikeep.push_back(i); return static_cast(ikeep.size()-1); } + int keep_bvar(int i) { bkeep.push_back(i); return static_cast(bkeep.size()-1); } + int keep_fvar(int i) { fkeep.push_back(i); return static_cast(fkeep.size()-1); } + int keep_svar(int i) { skeep.push_back(i); return static_cast(skeep.size()-1); } + + void freeze(Space& home, + IntVarArray& iarr, BoolVarArray& barr, SetVarArray& sarr, FloatVarArray& farr, + int& num, int& den) + { + if (keeping_some()) + { + // make sure that optimization vars (if any) are kept + if (num != -1) + { + const int _num(num); + const int _den(den); + int n = static_cast(ikeep.size()); + bool num_found(false); + bool den_found(false); + for (;n--;) + { + const int idx(ikeep[n]); + if (idx==_num) + { num_found=true; if (den_found) break; } + if (idx==_den) + { den_found=true; if (num_found) break; } + } + if (!num_found) + { ikeep.push_back(_num); + num=static_cast(ikeep.size()-1); } + if (_den != -1 && !den_found) + { ikeep.push_back(_den); + den=static_cast(ikeep.size()-1); } + } + { int n = static_cast(ikeep.size()); + iarr = IntVarArray(home, n); + for (;n--;) iarr[n]=ivars[ikeep[n]]; } + { int n = static_cast(bkeep.size()); + barr = BoolVarArray(home, n); + for (;n--;) barr[n]=bvars[bkeep[n]]; } + { int n = static_cast(skeep.size()); + sarr = SetVarArray(home, n); + for (;n--;) sarr[n]=svars[skeep[n]]; } + { int n = static_cast(fkeep.size()); + farr = FloatVarArray(home, n); + for (;n--;) farr[n]=fvars[skeep[n]]; } + } + else + { + { int n = static_cast(ivars.size()); + iarr = IntVarArray(home, n); + for (;n--;) iarr[n]=ivars[n]; } + { int n = static_cast(bvars.size()); + barr = BoolVarArray(home, n); + for (;n--;) barr[n]=bvars[n]; } + { int n = static_cast(svars.size()); + sarr = SetVarArray(home, n); + for (;n--;) sarr[n]=svars[n]; } + { int n = static_cast(fvars.size()); + farr = FloatVarArray(home, n); + for (;n--;) farr[n]=fvars[n]; } + } + } + }; + + class GenericSpace: public Space + { + Optimizing optim; + IntVarArray ivars; + BoolVarArray bvars; + FloatVarArray fvars; + SetVarArray svars; + LoadingDock* dock; + bool keeping_some; // iff only SOME of the vars are kept + public: + Space* space() { return this; } + + GenericSpace copy(bool share) + { freeze(); return *new GenericSpace(share, *this); } + + + GenericSpace(bool share, GenericSpace& s) + : Space( s), optim(s.optim), dock(NULL), keeping_some(s.keeping_some) + { + ivars.update(*this, s.ivars); + bvars.update(*this, s.bvars); + svars.update(*this, s.svars); + fvars.update(*this, s.fvars); + } + + + GenericSpace() : dock(new LoadingDock()), keeping_some(false) {} + ~GenericSpace() { delete dock; } + + // throw some C++ exception on behalf of glue code + void kaboom(const char* s) + { throw Exception("gecode-python", s); } + int ikaboom(const char* s) + { kaboom(s); return 0; } + + // freeze the space before handing it off to a search engine + void freeze() + { + if (dock) + { + keeping_some = dock->keeping_some(); + dock->freeze(*this, ivars, bvars, svars, fvars, optim.num, optim.den); + delete dock; + dock = NULL; + } + } + + IntVar get_ivar(int i) const { return (dock)?dock->get_ivar(i):ivars[i]; } + BoolVar get_bvar(int i) const { return (dock)?dock->get_bvar(i):bvars[i]; } + SetVar get_svar(int i) const { return (dock)?dock->get_svar(i):svars[i]; } + FloatVar get_fvar(int i) const { return (dock)?dock->get_fvar(i):fvars[i]; } + + int keep_ivar(int i) + { + if (dock) return dock->keep_ivar(i); + else return ikaboom("too late to keep"); + } + + int keep_bvar(int i) + { + if (dock) return dock->keep_bvar(i); + else return ikaboom("too late to keep"); + } + + int keep_svar(int i) + { + if (dock) return dock->keep_svar(i); + else return ikaboom("too late to keep"); + } + + int keep_fvar(int i) + { + if (dock) return dock->keep_fvar(i); + else return ikaboom("too late to keep"); + } + + bool frozen() const { return dock==NULL; } + bool has_keepers() const { return keeping_some; } + // when frozen and has_keepers: which is just has_keepers actually + bool use_keep_index() const { return has_keepers(); } + + GenericEngine* new_engine(bool restart, Search::Options& opt) + { + freeze(); + return (optim.what == Optimizing::OPT_NONE) + ? ( restart + ? static_cast(new GenericRestartDFS(this,opt)) + : static_cast(new GenericDFS(this,opt)) ) + : (restart + ? static_cast(new GenericRestartBAB(this,opt)) + : + static_cast(new GenericBAB(this,opt)) ); + } + + int _new_ivar(IntVar& v) + { + if (dock) return dock->enter_ivar(v); + else return ikaboom("too late to create vars"); + } + + int new_ivar(int lo, int hi) + { + IntVar v(*this, lo, hi); + return _new_ivar(v); + } + + int new_ivar(IntSet& s) + { + IntVar v(*this, s); + return _new_ivar(v); + } + + int _new_fvar(FloatVar& v) + { + if (dock) return dock->enter_fvar(v); + else return ikaboom("too late to create vars"); + } + + int new_fvar(double lo, double hi) + { + FloatVar v(*this, lo, hi); + return _new_fvar(v); + } + + int _new_bvar(BoolVar& v) + { + if (dock) return dock->enter_bvar(v); + else return ikaboom("too late to create vars"); + } + + int new_bvar() + { + BoolVar v(*this, 0, 1); + return _new_bvar(v); + } + + int _new_svar(SetVar& v) + { + if (dock) return dock->enter_svar(v); + else return ikaboom("too late to create vars"); + } + + int new_svar(int glbMin, int glbMax, int lubMin, int lubMax, + unsigned int cardMin=0, + unsigned int cardMax=Set::Limits::card) + { + SetVar v(*this, glbMin, glbMax, lubMin, lubMax, cardMin, cardMax); + return _new_svar(v); + } + + int new_ssvar(int glbMin, int glbMax, IntSet lubMin, IntSet lubMax, + unsigned int cardMin=0, + unsigned int cardMax=Set::Limits::card) + { + SetVar v(*this, glbMin, glbMax, lubMin, lubMax, cardMin, cardMax); + return _new_svar(v); + } + + int new_ssvar(IntSet glb, int lubMin, int lubMax, + unsigned int cardMin=0, + unsigned int cardMax=Set::Limits::card) + { + SetVar v(*this, glb, lubMin, lubMax, cardMin, cardMax); + return _new_svar(v); + } + + int new_svar(int glbMin, int glbMax, IntSet lub, + unsigned int cardMin=0, + unsigned int cardMax=Set::Limits::card) + { + SetVar v(*this, glbMin, glbMax, lub, cardMin, cardMax); + return _new_svar(v); + } + + int new_sssvar(IntSet glb, IntSet lub, + unsigned int cardMin=0, + unsigned int cardMax=Set::Limits::card) + { + SetVar v(*this, glb, lub, cardMin, cardMax); + return _new_svar(v); + } + + void minimize(int i) { optim.minimize(i); } + void minimize(int i, int j) { optim.minimize(i,j); } + void maximize(int i) { optim.maximize(i); } + void maximize(int i, int j) { optim.maximize(i,j); } + + void constrain(const Space& s) + { + const GenericSpace& sol = static_cast(s); + switch (optim.what) + { + case Optimizing::OPT_NONE: + break; + case Optimizing::OPT_INT: + rel(*this, ivars[optim.num], + ((optim.how==Optimizing::OPT_MIN) ? IRT_LE : IRT_GR), + sol.ivars[optim.num].val()); + break; + case Optimizing::OPT_RATIO: + { + IntArgs c(2, sol.ivars[optim.den].val(), + - sol.ivars[optim.num].val()); + IntVarArgs v(2); + v[0] = ivars[optim.num]; + v[1] = ivars[optim.den]; + linear(*this, c, v, + ((optim.how==Optimizing::OPT_MIN) ? IRT_LE : IRT_GR), 0); + break; + } + } + } + }; +} + +#ifdef DISJUNCTOR +#include "disjunctor.icc" +#endif + +#endif diff --git a/packages/gecode/gecode6.yap b/packages/gecode/gecode6.yap new file mode 100644 index 000000000..9fbd857bf --- /dev/null +++ b/packages/gecode/gecode6.yap @@ -0,0 +1,7 @@ + +/* just for program analysis */ + + + +:- include(gecode6_yap_hand_written). +:- include('6.0.0/gecode_yap_auto_generated'). diff --git a/packages/gecode/gecode6_yap.cc b/packages/gecode/gecode6_yap.cc new file mode 100644 index 000000000..a58ddfd3e --- /dev/null +++ b/packages/gecode/gecode6_yap.cc @@ -0,0 +1,2111 @@ +// -*- c++ -*- +//============================================================================= +// Copyright (C) 2011 by Denys Duchier +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation, either version 3 of the License, or (at your +// option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +//============================================================================= + +#include "gecode6-common.icc" +#include +using namespace std; +using namespace generic_gecode; +using namespace Gecode; + +extern "C" +{ +void gecode_init(void); + +#include "config.h" +} + +namespace generic_gecode +{ +#ifndef HAVE_DYNARRAY + template struct DynArray + { + T* _array; + DynArray(int n): _array(new T[n]) {} + ~DynArray() { delete[] _array; } + T& operator[](int i) { return _array[i]; } + }; +#define DYNARRAY(T,A,N) DynArray A(N) +#else +#define DYNARRAY(T,A,N) T A[N] +#endif + +#ifndef HAVE_DYNARRAY + struct SpecArray + { + int (*_array)[2]; + SpecArray(int n): _array((int (*)[2]) new int[n*2]) {} + ~SpecArray() { delete[] _array; } + int& operator()(int i,int j) { return _array[i][j]; } + }; +#define SPECARRAY(A,N) SpecArray A(N) +#define SPECARRAYELEM(A,I,J) A(I,J) +#define SPECARRAYDEREF(A) A._array +#else +#define SPECARRAY(A,N) int A[N][2] +#define SPECARRAYELEM(A,I,J) A[I][J] +#define SPECARRAYDEREF(A) A +#endif +} + +extern "C" +{ +#include "YapInterface.h" + + static YAP_opaque_tag_t gecode_space_tag; + static YAP_opaque_handler_t gecode_space_handler; + + static YAP_Bool gecode_space_fail_handler(YAP_Term t) + { + delete *(GenericSpace **)YAP_OpaqueObjectFromTerm(YAP_HeadOfTerm(t)); + return TRUE; + } + + static YAP_Bool + gecode_space_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Term gecode_term_from_space(GenericSpace* s) + { + YAP_Term term = + YAP_NewOpaqueObject(gecode_space_tag, sizeof(GenericSpace*)); + GenericSpace** ptr = + (GenericSpace**) YAP_OpaqueObjectFromTerm(term); + *ptr = s; + return term; + } + + static YAP_Bool gecode_new_space(void) + { + YAP_Term term = gecode_term_from_space(new GenericSpace); + return YAP_Unify(YAP_ARG1, term); + } + + +#ifndef DISJUNCTOR + static inline GenericSpace* + gecode_Space_from_term(YAP_Term t) + { + return * (GenericSpace**) YAP_OpaqueObjectFromTerm(t); + } +#else + struct YapDisjunctor + { + GenericSpace* home; + Disjunctor disj; + YapDisjunctor(GenericSpace* home_) + : home(home_), disj(*home_) {} + }; + + static YAP_opaque_tag_t gecode_disjunctor_tag; + static YAP_opaque_handler_t gecode_disjunctor_handler; + static YAP_opaque_tag_t gecode_disjunctor_clause_tag; + static YAP_opaque_handler_t gecode_disjunctor_clause_handler; + + static inline Disjunctor& + gecode_Disjunctor_from_term(YAP_Term t) + { + return ((YapDisjunctor*) YAP_OpaqueObjectFromTerm(t))->disj; + } + + static inline YapDisjunctor& + gecode_YapDisjunctor_from_term(YAP_Term t) + { + return * (YapDisjunctor*) YAP_OpaqueObjectFromTerm(t); + } + + static inline Clause& + gecode_Clause_from_term(YAP_Term t) + { + return * (Clause*) YAP_OpaqueObjectFromTerm(t); + } + + static inline GenericSpace* + gecode_Space_from_term(YAP_Term t) + { + if (YAP_IsOpaqueObjectTerm(t, gecode_disjunctor_clause_tag)) + { + Clause& c = gecode_Clause_from_term(t); + return & (GenericSpace&) c; + } + return * (GenericSpace**) YAP_OpaqueObjectFromTerm(t); + } +#endif + + static inline FloatAssign& + gecode_FloatAssign_from_term(YAP_Term t) + { + return * (FloatAssign*) YAP_OpaqueObjectFromTerm(t); + } + +static inline BoolAssign& + gecode_BoolAssign_from_term(YAP_Term t) + { + return * (BoolAssign*) YAP_OpaqueObjectFromTerm(t); + } + + static inline IntAssign& + gecode_IntAssign_from_term(YAP_Term t) + { + return * (IntAssign*) YAP_OpaqueObjectFromTerm(t); + } + + static inline SetAssign& + gecode_SetAssign_from_term(YAP_Term t) + { + return * (SetAssign*) YAP_OpaqueObjectFromTerm(t); + } + + static inline TupleSet& + gecode_TupleSet_from_term(YAP_Term t) + { + return *(TupleSet *) YAP_OpaqueObjectFromTerm(t); + } + + static inline DFA& + gecode_DFA_from_term(YAP_Term t) + { + return *(DFA *) YAP_OpaqueObjectFromTerm(t); + } + + static inline Rnd& + gecode_Rnd_from_term(YAP_Term t) + { + return *(Rnd *) YAP_OpaqueObjectFromTerm(t); + } + + static inline std::function& + gecode_std_function_from_term(YAP_Term t) + { + return *(std::function *) YAP_OpaqueObjectFromTerm(t); + } + + static inline FloatNum + gecode_FloatNum_from_term(YAP_Term t) + { + return (FloatNum) YAP_FloatOfTerm(t); + } + + static YAP_Term gecode_SET_VAR_NONE; + static YAP_Term gecode_SET_VAR_DEGREE_MIN; + static YAP_Term gecode_SET_VAR_DEGREE_MAX; + static YAP_Term gecode_SET_VAR_MIN_MIN; + static YAP_Term gecode_SET_VAR_MIN_MAX; + static YAP_Term gecode_SET_VAR_MAX_MIN; + static YAP_Term gecode_SET_VAR_MAX_MAX; + static YAP_Term gecode_SET_VAR_SIZE_MIN; + static YAP_Term gecode_SET_VAR_SIZE_MAX; + static YAP_Term gecode_SET_VAR_DEGREE_SIZE_MIN; + static YAP_Term gecode_SET_VAR_DEGREE_SIZE_MAX; + + static inline SetVarBranch + gecode_SetVarBranch_from_term(YAP_Term t) + { + + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_SET_VAR_SIZE_MIN) + return SET_VAR_SIZE_MIN(); + if ( t == gecode_SET_VAR_SIZE_MAX) + return SET_VAR_SIZE_MAX(); + if ( t == gecode_SET_VAR_NONE) + return SET_VAR_NONE(); + if ( t == gecode_SET_VAR_DEGREE_MIN) + return SET_VAR_DEGREE_MIN(); + if ( t == gecode_SET_VAR_DEGREE_MAX) + return SET_VAR_DEGREE_MAX(); + if ( t == gecode_SET_VAR_MIN_MIN) + return SET_VAR_MIN_MIN(); + if ( t == gecode_SET_VAR_MIN_MAX) + return SET_VAR_MIN_MAX(); + if ( t == gecode_SET_VAR_MAX_MIN) + return SET_VAR_MAX_MIN(); + if ( t == gecode_SET_VAR_MAX_MAX) + return SET_VAR_MAX_MAX(); + if ( t == gecode_SET_VAR_DEGREE_SIZE_MIN) + return SET_VAR_DEGREE_SIZE_MIN(); + if ( t == gecode_SET_VAR_DEGREE_SIZE_MAX) + return SET_VAR_DEGREE_SIZE_MAX(); + } + cerr << "unsupported SET VAR" << endl; exit(1); + } + + static YAP_Term gecode_SET_VAL_MIN_INC; + static YAP_Term gecode_SET_VAL_MIN_EXC; + static YAP_Term gecode_SET_VAL_MED_INC; + static YAP_Term gecode_SET_VAL_MED_EXC; + static YAP_Term gecode_SET_VAL_MAX_INC; + static YAP_Term gecode_SET_VAL_MAX_EXC; + + static inline SetValBranch + gecode_SetValBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_SET_VAL_MIN_INC) + return SET_VAL_MIN_INC(); + if ( t == gecode_SET_VAL_MIN_EXC) + return SET_VAL_MIN_EXC(); + if ( t == gecode_SET_VAL_MED_INC) + return SET_VAL_MED_INC(); + if ( t == gecode_SET_VAL_MED_EXC) + return SET_VAL_MED_EXC(); + if ( t == gecode_SET_VAL_MAX_INC) + return SET_VAL_MAX_INC(); + if ( t == gecode_SET_VAL_MAX_EXC) + return SET_VAL_MAX_EXC(); + } + cerr << "unsupported INT VAL" << endl; exit(1); + } + + static inline SetBranchFilter& + gecode_SetBranchFilter_from_term(YAP_Term t) + { + return * (SetBranchFilter*) YAP_OpaqueObjectFromTerm(t); + } + + static YAP_Term gecode_INT_VAR_NONE; + static YAP_Term gecode_INT_VAR_DEGREE_MIN; + static YAP_Term gecode_INT_VAR_DEGREE_MAX; + static YAP_Term gecode_INT_VAR_MIN_MIN; + static YAP_Term gecode_INT_VAR_MIN_MAX; + static YAP_Term gecode_INT_VAR_MAX_MIN; + static YAP_Term gecode_INT_VAR_MAX_MAX; + static YAP_Term gecode_INT_VAR_SIZE_MIN; + static YAP_Term gecode_INT_VAR_SIZE_MAX; + static YAP_Term gecode_INT_VAR_DEGREE_SIZE_MIN; + static YAP_Term gecode_INT_VAR_DEGREE_SIZE_MAX; + static YAP_Term gecode_INT_VAR_REGRET_MIN_MIN; + static YAP_Term gecode_INT_VAR_REGRET_MIN_MAX; + static YAP_Term gecode_INT_VAR_REGRET_MAX_MIN; + static YAP_Term gecode_INT_VAR_REGRET_MAX_MAX; + + static inline IntVarBranch + gecode_IntVarBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_INT_VAR_SIZE_MIN) + return INT_VAR_SIZE_MIN(); + if ( t == gecode_INT_VAR_SIZE_MAX) + return INT_VAR_SIZE_MAX(); + if ( t == gecode_INT_VAR_NONE) + return INT_VAR_NONE(); + if ( t == gecode_INT_VAR_DEGREE_MIN) + return INT_VAR_DEGREE_MIN(); + if ( t == gecode_INT_VAR_DEGREE_MAX) + return INT_VAR_DEGREE_MAX(); + if ( t == gecode_INT_VAR_MIN_MIN) + return INT_VAR_MIN_MIN(); + if ( t == gecode_INT_VAR_MIN_MAX) + return INT_VAR_MIN_MAX(); + if ( t == gecode_INT_VAR_MAX_MIN) + return INT_VAR_MAX_MIN(); + if ( t == gecode_INT_VAR_MAX_MAX) + return INT_VAR_MAX_MAX(); + if ( t == gecode_INT_VAR_DEGREE_SIZE_MIN) + return INT_VAR_DEGREE_SIZE_MIN(); + if ( t == gecode_INT_VAR_DEGREE_SIZE_MAX) + return INT_VAR_DEGREE_SIZE_MAX(); + if ( t == gecode_INT_VAR_REGRET_MIN_MIN) + return INT_VAR_REGRET_MIN_MIN(); + if ( t == gecode_INT_VAR_REGRET_MIN_MAX) + return INT_VAR_REGRET_MIN_MAX(); + if ( t == gecode_INT_VAR_REGRET_MAX_MIN) + return INT_VAR_REGRET_MAX_MIN(); + if ( t == gecode_INT_VAR_REGRET_MAX_MAX) + return INT_VAR_REGRET_MAX_MAX(); + } + cerr << "unsupported INT VAR" << endl; exit(1); + } + +static YAP_Term gecode_BOOL_VAR_NONE; +static YAP_Term gecode_BOOL_VAR_RND; + // static YAP_Term gecode_BOOL_VAR_MERIT_MIN; + // static YAP_Term gecode_BOOL_VAR_MERIT_MAX; + static YAP_Term gecode_BOOL_VAR_DEGREE_MIN; + static YAP_Term gecode_BOOL_VAR_DEGREE_MAX; + static YAP_Term gecode_BOOL_VAR_MAX_MIN; + static YAP_Term gecode_BOOL_VAR_MAX_MAX; + static YAP_Term gecode_BOOL_VAR_AFC_MIN; + static YAP_Term gecode_BOOL_VAR_AFC_MAX; + static YAP_Term gecode_BOOL_VAR_ACTION_MIN; + static YAP_Term gecode_BOOL_VAR_ACTION_MAX; + static YAP_Term gecode_BOOL_VAR_CHB_MIN; + static YAP_Term gecode_BOOL_VAR_CHB_MAX; + + static inline BoolVarBranch + gecode_BoolVarBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_BOOL_VAR_NONE) + return BOOL_VAR_NONE(); + if ( t == gecode_BOOL_VAR_RND) + return BOOL_VAR_RND(Rnd()); + // if ( t == gecode_BOOL_VAR_MERIT_MIN) + // return BOOL_VAR_MERIT_MIN(); + // if ( t == gecode_BOOL_VAR_MERIT_MAX) + // return BOOL_VAR_MERIT_MAX(); + if ( t == gecode_BOOL_VAR_DEGREE_MIN) + return BOOL_VAR_DEGREE_MIN(); + if ( t == gecode_BOOL_VAR_DEGREE_MAX) + return BOOL_VAR_DEGREE_MAX(); + if ( t == gecode_BOOL_VAR_AFC_MIN) + return BOOL_VAR_AFC_MIN(); + if ( t == gecode_BOOL_VAR_AFC_MAX) + return BOOL_VAR_AFC_MAX(); + if ( t == gecode_BOOL_VAR_ACTION_MIN) + return BOOL_VAR_ACTION_MIN(); + if ( t == gecode_BOOL_VAR_ACTION_MAX) + return BOOL_VAR_ACTION_MAX(); + if ( t == gecode_BOOL_VAR_CHB_MIN) + return BOOL_VAR_CHB_MIN(); + if ( t == gecode_BOOL_VAR_CHB_MAX) + return BOOL_VAR_CHB_MAX(); + } + cerr << "unsupported INT VAR" << endl; exit(1); + } + + static YAP_Term gecode_FLOAT_VAR_NONE; + static YAP_Term gecode_FLOAT_VAR_DEGREE_MIN; + static YAP_Term gecode_FLOAT_VAR_DEGREE_MAX; + static YAP_Term gecode_FLOAT_VAR_MIN_MIN; + static YAP_Term gecode_FLOAT_VAR_MIN_MAX; + static YAP_Term gecode_FLOAT_VAR_MAX_MIN; + static YAP_Term gecode_FLOAT_VAR_MAX_MAX; + static YAP_Term gecode_FLOAT_VAR_SIZE_MIN; + static YAP_Term gecode_FLOAT_VAR_SIZE_MAX; + static YAP_Term gecode_FLOAT_VAR_DEGREE_SIZE_MAX; + static YAP_Term gecode_FLOAT_VAR_DEGREE_SIZE_MIN; + + static inline FloatVarBranch + gecode_FloatVarBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_FLOAT_VAR_SIZE_MIN) + return FLOAT_VAR_SIZE_MIN(); + if ( t == gecode_FLOAT_VAR_SIZE_MAX) + return FLOAT_VAR_SIZE_MAX(); + if ( t == gecode_FLOAT_VAR_NONE) + return FLOAT_VAR_NONE(); + if ( t == gecode_FLOAT_VAR_DEGREE_MIN) + return FLOAT_VAR_DEGREE_MIN(); + if ( t == gecode_FLOAT_VAR_DEGREE_MAX) + return FLOAT_VAR_DEGREE_MAX(); + if ( t == gecode_FLOAT_VAR_MIN_MIN) + return FLOAT_VAR_MIN_MIN(); + if ( t == gecode_FLOAT_VAR_MIN_MAX) + return FLOAT_VAR_MIN_MAX(); + if ( t == gecode_FLOAT_VAR_MAX_MIN) + return FLOAT_VAR_MAX_MIN(); + if ( t == gecode_FLOAT_VAR_MAX_MAX) + return FLOAT_VAR_MAX_MAX(); + if ( t == gecode_FLOAT_VAR_DEGREE_SIZE_MIN) + return FLOAT_VAR_DEGREE_SIZE_MIN(); + if ( t == gecode_FLOAT_VAR_DEGREE_SIZE_MAX) + return FLOAT_VAR_DEGREE_SIZE_MAX(); + } + cerr << "unsupported FLOAT VAR" << endl; exit(1); + } + + static YAP_Term gecode_INT_VAL_MIN; + static YAP_Term gecode_INT_VAL_MED; + static YAP_Term gecode_INT_VAL_MAX; + static YAP_Term gecode_INT_VAL_SPLIT_MIN; + static YAP_Term gecode_INT_VAL_SPLIT_MAX; + static YAP_Term gecode_INT_VAL_RANGE_MIN; + static YAP_Term gecode_INT_VAL_RANGE_MAX; + static YAP_Term gecode_INT_VALUES_MIN; + static YAP_Term gecode_INT_VALUES_MAX; + + static inline IntValBranch + gecode_IntValBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_INT_VAL_MIN) + return INT_VAL_MIN(); + if ( t == gecode_INT_VAL_MED) + return INT_VAL_MED(); + if ( t == gecode_INT_VAL_MAX) + return INT_VAL_MAX(); + if ( t == gecode_INT_VAL_SPLIT_MIN) + return INT_VAL_SPLIT_MIN(); + if ( t == gecode_INT_VAL_SPLIT_MAX) + return INT_VAL_SPLIT_MAX(); + if ( t == gecode_INT_VAL_RANGE_MIN) + return INT_VAL_RANGE_MIN(); + if ( t == gecode_INT_VAL_RANGE_MAX) + return INT_VAL_RANGE_MAX(); + if ( t == gecode_INT_VALUES_MIN) + return INT_VALUES_MIN(); + if ( t == gecode_INT_VALUES_MAX) + return INT_VALUES_MAX(); + } + cerr << "unsupported INT VAL" << endl; exit(1); + } + + static YAP_Term gecode_BOOL_VAL_MIN; + static YAP_Term gecode_BOOL_VAL_MAX; + static YAP_Term gecode_BOOL_VAL_RND; + + static inline BoolValBranch + gecode_BoolValBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_BOOL_VAL_MIN) + return BOOL_VAL_MIN(); + if ( t == gecode_BOOL_VAL_MAX) + return BOOL_VAL_MAX(); + if ( t == gecode_BOOL_VAL_RND) +return BOOL_VAL_RND(Rnd()); + } + cerr << "unsupported BOOL VAL" << endl; exit(1); + } + // + // static inline BoolVal& + // gecode_BoolVal_from_term(YAP_Term t) + // { + // return * (BoolVal*) YAP_OpaqueObjectFromTerm(t); + // } + // + + static YAP_Term gecode_FLOAT_VAL_SPLIT_MIN; + static YAP_Term gecode_FLOAT_VAL_SPLIT_MAX; + + static inline FloatValBranch + gecode_FloatValBranch_from_term(YAP_Term t) + { + if (YAP_IsAtomTerm(t)) { + if ( t == gecode_FLOAT_VAL_SPLIT_MIN) + return FLOAT_VAL_SPLIT_MIN(); + if ( t == gecode_FLOAT_VAL_SPLIT_MAX) + return FLOAT_VAL_SPLIT_MAX(); + } + cerr << "unsupported FLOAT VAL" << endl; exit(1); + } + + static inline FloatVal& + gecode_FloatVal_from_term(YAP_Term t) + { + return * (FloatVal*) YAP_OpaqueObjectFromTerm(t); + } + + static inline Symmetries& + gecode_Symmetries_from_term(YAP_Term t) + { + return * (Symmetries*) YAP_OpaqueObjectFromTerm(t); + } + + static inline IntBranchFilter& + gecode_IntBranchFilter_from_term(YAP_Term t) + { + return * (IntBranchFilter*) YAP_OpaqueObjectFromTerm(t); + } + + static inline BoolBranchFilter& + gecode_BoolBranchFilter_from_term(YAP_Term t) + { + return * (BoolBranchFilter*) YAP_OpaqueObjectFromTerm(t); + } + + static inline FloatBranchFilter& + gecode_FloatBranchFilter_from_term(YAP_Term t) + { + return * (FloatBranchFilter*) YAP_OpaqueObjectFromTerm(t); + } + + static inline SetVarValPrint& + gecode_SetVarValPrint_from_term(YAP_Term t) + { + return * (SetVarValPrint*) YAP_OpaqueObjectFromTerm(t); + } + + static inline IntVarValPrint& + gecode_IntVarValPrint_from_term(YAP_Term t) + { + return * (IntVarValPrint*) YAP_OpaqueObjectFromTerm(t); + } + + static inline BoolVarValPrint& + gecode_BoolVarValPrint_from_term(YAP_Term t) + { + return * (BoolVarValPrint*) YAP_OpaqueObjectFromTerm(t); + } + + static inline FloatVarValPrint& + gecode_FloatVarValPrint_from_term(YAP_Term t) + { + return * (FloatVarValPrint*) YAP_OpaqueObjectFromTerm(t); + } + + static YAP_opaque_tag_t gecode_engine_tag; + static YAP_opaque_handler_t gecode_engine_handler; + + static RestartMode gecode_RestartMode_from_term(YAP_Term t); + + static YAP_Bool gecode_new_engine(void) + { + YAP_Term arg1 = YAP_ARG1; + YAP_Term arg2 = YAP_ARG2; + YAP_Term arg3 = YAP_ARG3; + bool restart = YAP_IntOfTerm(YAP_ArgOfTerm(1, arg3)); + double threads = YAP_FloatOfTerm(YAP_ArgOfTerm(2, arg3)); + unsigned int c_d = YAP_IntOfTerm(YAP_ArgOfTerm(3, arg3)); + unsigned int a_d = YAP_IntOfTerm(YAP_ArgOfTerm(4, arg3)); + unsigned int nogoods_limit = YAP_IntOfTerm(YAP_ArgOfTerm(6, arg3)); + bool clone = ( YAP_IntOfTerm(YAP_ArgOfTerm(7, arg3)) == 0 ? FALSE : TRUE ); + RestartMode md; + YAP_Term t = YAP_ArgOfTerm(5, arg3); + if (YAP_IsAtomTerm(t)) { + md = gecode_RestartMode_from_term(t); + } else if (YAP_IsApplTerm(t)) { + md = gecode_RestartMode_from_term(YAP_MkAtomTerm(YAP_NameOfFunctor(YAP_FunctorOfTerm(t)))); + } else { + cerr << "bad engine cutoff option" << endl; exit(1); + } + Search::Cutoff* cutoff; + YAP_Term t_s, t_b; + switch (md) { + case RM_CONSTANT: + YAP_Term t_a; + if (YAP_ArityOfFunctor(YAP_FunctorOfTerm(t)) == 1 && + YAP_IsIntTerm(t_a = YAP_ArgOfTerm(1,t))) { + unsigned long int a = YAP_IntOfTerm(t_a); + cutoff = Search::Cutoff::constant(a); + } else { + cerr << "bad parameter for constant" << endl; exit(1); + } + break; + case RM_GEOMETRIC: + if (YAP_ArityOfFunctor(YAP_FunctorOfTerm(t)) == 2 && + YAP_IsIntTerm(t_s = YAP_ArgOfTerm(1,t)) && + YAP_IsIntTerm(t_b = YAP_ArgOfTerm(2,t))) { + unsigned long int s = YAP_IntOfTerm(t_s); + unsigned long int b = YAP_IntOfTerm(t_b); + cutoff = Search::Cutoff::geometric(s,b); + } else { + cerr << "bad parameter for geometric" << endl; exit(1); + } + break; + case RM_LUBY: + if (YAP_ArityOfFunctor(YAP_FunctorOfTerm(t)) == 1 && + YAP_IsIntTerm(t_s = YAP_ArgOfTerm(1,t))) { + unsigned long int s = YAP_IntOfTerm(t_s); + cutoff = Search::Cutoff::luby(s); + } else { + cerr << "bad parameter for luby" << endl; exit(1); + } + break; + case RM_LINEAR: + if (YAP_ArityOfFunctor(YAP_FunctorOfTerm(t)) == 1 && + YAP_IsIntTerm(t_s = YAP_ArgOfTerm(1,t))) { + unsigned long int s = YAP_IntOfTerm(t_s); + cutoff = Search::Cutoff::linear(s); + } else { + cerr << "bad parameter for linear" << endl; exit(1); + } + break; + default: + cutoff = NULL; + } + Search::Options opt; + opt.threads = threads; + opt.c_d = c_d; + opt.a_d = a_d; + opt.cutoff = cutoff; + opt.nogoods_limit = nogoods_limit; + opt.clone = clone; + opt.stop = NULL; + GenericSpace* space = gecode_Space_from_term(arg1); + GenericEngine* engine = space->new_engine(restart,opt); + YAP_Term y_engine = + YAP_NewOpaqueObject(gecode_engine_tag, sizeof(GenericEngine*)); + GenericEngine** ptr = + (GenericEngine**) YAP_OpaqueObjectFromTerm(y_engine); + *ptr = engine; + return YAP_Unify(arg2, y_engine); + } + + static inline GenericEngine* + gecode_engine_from_term(YAP_Term t) + { + return * (GenericEngine**) YAP_OpaqueObjectFromTerm(t); + } + + static YAP_Bool gecode_engine_fail_handler(YAP_Term t) + { + delete *(GenericEngine**)YAP_OpaqueObjectFromTerm(YAP_HeadOfTerm(t)); + return TRUE; + } + + static YAP_Bool + gecode_engine_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Bool gecode_engine_search(void) + { + GenericEngine* engine = gecode_engine_from_term(YAP_ARG1); + GenericSpace* space = engine->next(); + if (space) + { + YAP_Term term = gecode_term_from_space(space); + return YAP_Unify(YAP_ARG2, term); + } + else YAP_cut_fail(); + } + +#ifdef DISJUNCTOR + static YAP_Bool gecode_new_disjunctor(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + YAP_Term term = + YAP_NewOpaqueObject(gecode_disjunctor_tag, sizeof(YapDisjunctor)); + new (YAP_OpaqueObjectFromTerm(term)) YapDisjunctor(space); + return YAP_Unify(result, term); + } + + static YAP_Bool + gecode_disjunctor_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Bool gecode_new_clause(void) + { + YAP_Term result = YAP_ARG1; + YapDisjunctor& disj = gecode_YapDisjunctor_from_term(YAP_ARG2); + YAP_Term term = + YAP_NewOpaqueObject(gecode_disjunctor_clause_tag, sizeof(Clause)); + new (YAP_OpaqueObjectFromTerm(term)) Clause(*disj.home,disj.disj); + return YAP_Unify(result, term); + } + + static YAP_Bool + gecode_clause_write_handler + (FILE *stream_, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static IntVar gecode_IntVar_from_term(GenericSpace*,YAP_Term); + static BoolVar gecode_BoolVar_from_term(GenericSpace*,YAP_Term); + static FloatVar gecode_FloatVar_from_term(GenericSpace*,YAP_Term); + static SetVar gecode_SetVar_from_term(GenericSpace*,YAP_Term); + + static YAP_Bool gecode_clause_intvar_forward(void) + { + Clause& clause = gecode_Clause_from_term(YAP_ARG1); + GenericSpace* outer = clause.generic_parent(); + GenericSpace* inner = clause.generic_space(); + IntVar outer_var = gecode_IntVar_from_term(outer, YAP_ARG2); + IntVar inner_var = gecode_IntVar_from_term(inner, YAP_ARG3); + clause.forward(outer_var,inner_var); + return TRUE; + } + + static YAP_Bool gecode_clause_boolvar_forward(void) + { + Clause& clause = gecode_Clause_from_term(YAP_ARG1); + GenericSpace* outer = clause.generic_parent(); + GenericSpace* inner = clause.generic_space(); + BoolVar outer_var = gecode_BoolVar_from_term(outer, YAP_ARG2); + BoolVar inner_var = gecode_BoolVar_from_term(inner, YAP_ARG3); + clause.forward(outer_var,inner_var); + return TRUE; + } + + static YAP_Bool gecode_clause_setvar_forward(void) + { + Clause& clause = gecode_Clause_from_term(YAP_ARG1); + GenericSpace* outer = clause.generic_parent(); + GenericSpace* inner = clause.generic_space(); + SetVar outer_var = gecode_SetVar_from_term(outer, YAP_ARG2); + SetVar inner_var = gecode_SetVar_from_term(inner, YAP_ARG3); + clause.forward(outer_var,inner_var); + return TRUE; + } +#endif + + static YAP_Bool gecode_new_intvar_from_bounds(void) + { + YAP_Term ivar = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int lo = YAP_IntOfTerm(YAP_ARG3); + int hi = YAP_IntOfTerm(YAP_ARG4); + int i = space->new_ivar(lo, hi); + YAP_Term y_i = YAP_MkIntTerm(i); + return YAP_Unify(ivar, y_i); + } + + static YAP_Bool gecode_new_floatvar_from_bounds(void) + { + YAP_Term ivar = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + double lo = YAP_FloatOfTerm(YAP_ARG3); + double hi = YAP_FloatOfTerm(YAP_ARG4); + int i = space->new_fvar(lo, hi); + YAP_Term y_i = YAP_MkIntTerm(i); + return YAP_Unify(ivar, y_i); + } + + static int + gecode_list_length(YAP_Term l) + { + int n = 0; + while (YAP_IsPairTerm(l)) + { + n += 1; + l = YAP_TailOfTerm(l); + } + return n; + } + + static IntSet + gecode_IntSet_from_term(YAP_Term specs) + { + int n = gecode_list_length(specs); + SPECARRAY(r,n); + int i = 0; + while (YAP_IsPairTerm(specs)) + { + YAP_Term head = YAP_HeadOfTerm(specs); + specs = YAP_TailOfTerm(specs); + SPECARRAYELEM(r,i,0) = YAP_IntOfTerm(YAP_ArgOfTerm(1, head)); + SPECARRAYELEM(r,i,1) = YAP_IntOfTerm(YAP_ArgOfTerm(2, head)); + i += 1; + } + return IntSet(SPECARRAYDEREF(r), n); + } + + static YAP_Bool gecode_new_intvar_from_intset(void) + { + YAP_Term ivar = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + YAP_Term specs = YAP_ARG3; + IntSet iset = gecode_IntSet_from_term(specs); + int i = space->new_ivar(iset); + return YAP_Unify(ivar, YAP_MkIntTerm(i)); + } + + static YAP_Bool gecode_new_boolvar(void) + { + YAP_Term bvar = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int i = space->new_bvar(); + return YAP_Unify(bvar, YAP_MkIntTerm(i)); + } + + static YAP_Bool gecode_new_setvar_1(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + int LubMin = YAP_IntOfTerm(YAP_ARG5); + int LubMax = YAP_IntOfTerm(YAP_ARG6); + int CardMin= YAP_IntOfTerm(YAP_ARG7); + int CardMax= YAP_IntOfTerm(YAP_ARG8); + int idx = space->new_svar(GlbMin,GlbMax,LubMin,LubMax,CardMin,CardMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_2(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + int LubMin = YAP_IntOfTerm(YAP_ARG5); + int LubMax = YAP_IntOfTerm(YAP_ARG6); + int CardMin= YAP_IntOfTerm(YAP_ARG7); + int idx = space->new_svar(GlbMin,GlbMax,LubMin,LubMax,CardMin); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_3(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + int LubMin = YAP_IntOfTerm(YAP_ARG5); + int LubMax = YAP_IntOfTerm(YAP_ARG6); + int idx = space->new_svar(GlbMin,GlbMax,LubMin,LubMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_4(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + int LubMin = YAP_IntOfTerm(YAP_ARG4); + int LubMax = YAP_IntOfTerm(YAP_ARG5); + int CardMin = YAP_IntOfTerm(YAP_ARG6); + int CardMax = YAP_IntOfTerm(YAP_ARG7); + int idx = space->new_ssvar(Glb,LubMin,LubMax,CardMin,CardMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_5(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + int LubMin = YAP_IntOfTerm(YAP_ARG4); + int LubMax = YAP_IntOfTerm(YAP_ARG5); + int CardMin = YAP_IntOfTerm(YAP_ARG6); + int idx; + idx = space->new_ssvar(Glb, LubMin, LubMax, CardMin); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_6(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + int LubMin = YAP_IntOfTerm(YAP_ARG4); + int LubMax = YAP_IntOfTerm(YAP_ARG5); + int idx = space->new_ssvar(Glb,LubMin,LubMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_7(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG5); + int CardMin = YAP_IntOfTerm(YAP_ARG6); + int CardMax = YAP_IntOfTerm(YAP_ARG7); + int idx = space->new_ssvar(GlbMin,GlbMax,Lub,Lub,CardMin,CardMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_8(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG5); + int CardMin = YAP_IntOfTerm(YAP_ARG6); + int idx = space->new_ssvar(GlbMin,GlbMax,Lub,Lub,CardMin); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_9(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + int GlbMin = YAP_IntOfTerm(YAP_ARG3); + int GlbMax = YAP_IntOfTerm(YAP_ARG4); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG5); + int idx = space->new_svar(GlbMin,GlbMax,Lub); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_10(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG4); + int CardMin = YAP_IntOfTerm(YAP_ARG5); + int CardMax = YAP_IntOfTerm(YAP_ARG6); + int idx = space->new_sssvar(Glb,Lub,CardMin,CardMax); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_11(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG4); + int CardMin = YAP_IntOfTerm(YAP_ARG5); + int idx = space->new_sssvar(Glb,Lub,CardMin); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_new_setvar_12(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntSet Glb = gecode_IntSet_from_term(YAP_ARG3); + IntSet Lub = gecode_IntSet_from_term(YAP_ARG4); + int idx = space->new_sssvar(Glb,Lub); + return YAP_Unify(result, YAP_MkIntTerm(idx)); + } + + static YAP_Bool gecode_space_minimize(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int i = YAP_IntOfTerm(YAP_ARG2); + space->minimize(i); + return TRUE; + } + + static YAP_Bool gecode_space_maximize(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int i = YAP_IntOfTerm(YAP_ARG2); + space->maximize(i); + return TRUE; + } + + static YAP_Bool gecode_space_minimize_ratio(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int i = YAP_IntOfTerm(YAP_ARG2); + int j = YAP_IntOfTerm(YAP_ARG3); + space->minimize(i,j); + return TRUE; + } + + static YAP_Bool gecode_space_maximize_ratio(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + int i = YAP_IntOfTerm(YAP_ARG2); + int j = YAP_IntOfTerm(YAP_ARG3); + space->maximize(i,j); + return TRUE; + } + + static IntVar + gecode_IntVar_from_term(GenericSpace* space, YAP_Term x) + { + int i = YAP_IntOfTerm(x); + return space->get_ivar(i); + } + + static BoolVar + gecode_BoolVar_from_term(GenericSpace* space, YAP_Term x) + { + int i = YAP_IntOfTerm(x); + return space->get_bvar(i); + } + + static SetVar + gecode_SetVar_from_term(GenericSpace* space, YAP_Term x) + { + int i = YAP_IntOfTerm(x); + return space->get_svar(i); + } + + static IntVarArgs + gecode_IntVarArgs_from_term(GenericSpace* space, YAP_Term l) + { + int n = gecode_list_length(l); + IntVarArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + int idx = YAP_IntOfTerm(YAP_HeadOfTerm(l)); + v[i] = space->get_ivar(idx); + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static BoolVarArgs + gecode_BoolVarArgs_from_term(GenericSpace* space, YAP_Term l) + { + int n = gecode_list_length(l); + BoolVarArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + int idx = YAP_IntOfTerm(YAP_HeadOfTerm(l)); + v[i] = space->get_bvar(idx); + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static FloatVar + gecode_FloatVar_from_term(GenericSpace* space, YAP_Term x) + { + int i = YAP_IntOfTerm(x); + return space->get_fvar(i); + } + + static FloatVarArgs + gecode_FloatVarArgs_from_term(GenericSpace* space, YAP_Term l) + { + int n = gecode_list_length(l); + FloatVarArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + int idx = YAP_IntOfTerm(YAP_HeadOfTerm(l)); + v[i] = space->get_fvar(idx); + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static FloatValArgs + gecode_FloatValArgs_from_term(YAP_Term l) + { + int n = gecode_list_length(l); + FloatValArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + YAP_Term t = YAP_HeadOfTerm(l); + v[i] = * (FloatVal*) YAP_OpaqueObjectFromTerm(t); + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static SetVarArgs + gecode_SetVarArgs_from_term(GenericSpace* space, YAP_Term l) + { + int n = gecode_list_length(l); + SetVarArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + int idx = YAP_IntOfTerm(YAP_HeadOfTerm(l)); + v[i] = space->get_svar(idx); + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static IntArgs + gecode_IntArgs_from_term(YAP_Term l) + { + int n = gecode_list_length(l); + IntArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + int idx = YAP_IntOfTerm(YAP_HeadOfTerm(l)); + v[i] = idx; + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static IntSetArgs + gecode_IntSetArgs_from_term(YAP_Term l) + { + int n = gecode_list_length(l); + IntSetArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + IntSet s = gecode_IntSet_from_term(YAP_HeadOfTerm(l)); + v[i] = s; + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static TaskType gecode_TaskType_from_term(YAP_Term); + + static TaskTypeArgs + gecode_TaskTypeArgs_from_term(YAP_Term l) + { + int n = gecode_list_length(l); + TaskTypeArgs v(n); + int i = 0; + while (YAP_IsPairTerm(l)) + { + TaskType tt = gecode_TaskType_from_term(YAP_HeadOfTerm(l)); + v[i] = tt; + l = YAP_TailOfTerm(l); + i += 1; + } + return v; + } + + static YAP_Term gecode_TRUE; + static YAP_Term gecode_FALSE; + + static bool + gecode_bool_from_term(YAP_Term X) + { + if (X==gecode_TRUE || YAP_MkIntTerm(1)) return true; + if (X==gecode_FALSE || YAP_MkIntTerm(0)) return false; + cerr << "this should never happen" << endl; exit(1); + } + + static YAP_Bool gecode_space_use_keep_index(void) + { + YAP_Term arg1 = YAP_ARG1; + YAP_Term arg2 = YAP_ARG2; + GenericSpace* space = gecode_Space_from_term(arg1); + return YAP_Unify(arg2,(space->use_keep_index() + ?gecode_TRUE:gecode_FALSE)); + } + + static YAP_Bool gecode_intvar_keep(void) + { + YAP_Term arg1 = YAP_ARG1; + YAP_Term arg2 = YAP_ARG2; + YAP_Term arg3 = YAP_ARG3; + GenericSpace* space = gecode_Space_from_term(arg1); + int idx = YAP_IntOfTerm(arg2); + int kidx = space->keep_ivar(idx); + return YAP_Unify(arg3,YAP_MkIntTerm(kidx)); + } + + static YAP_Bool gecode_boolvar_keep(void) + { + YAP_Term arg1 = YAP_ARG1; + YAP_Term arg2 = YAP_ARG2; + YAP_Term arg3 = YAP_ARG3; + GenericSpace* space = gecode_Space_from_term(arg1); + int idx = YAP_IntOfTerm(arg2); + int kidx = space->keep_bvar(idx); + return YAP_Unify(arg3,YAP_MkIntTerm(kidx)); + } + + static YAP_Bool gecode_setvar_keep(void) + { + YAP_Term arg1 = YAP_ARG1; + YAP_Term arg2 = YAP_ARG2; + YAP_Term arg3 = YAP_ARG3; + GenericSpace* space = gecode_Space_from_term(arg1); + int idx = YAP_IntOfTerm(arg2); + int kidx = space->keep_svar(idx); + return YAP_Unify(arg3,YAP_MkIntTerm(kidx)); + } + + // INFO ON INTVARS + static YAP_Bool gecode_intvar_assigned(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG2); + return (x.assigned()) ? TRUE : FALSE; + } + + static YAP_Bool gecode_intvar_min(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.min())); + } + + static YAP_Bool gecode_intvar_max(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.max())); + } + + static YAP_Bool gecode_intvar_med(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.med())); + } + + static YAP_Bool gecode_intvar_val(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.val())); + } + + static YAP_Bool gecode_intvar_size(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.size())); + } + + static YAP_Bool gecode_intvar_width(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.width())); + } + + static YAP_Bool gecode_intvar_regret_min(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.regret_min())); + } + + static YAP_Bool gecode_intvar_regret_max(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.regret_max())); + } + + static YAP_Functor gecode_COMMA2; + + static YAP_Bool gecode_intvar_ranges(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + int n = 0; + { IntVarRanges it(x); while (it()) { ++n; ++it; } } + DYNARRAY(int,min,n); + DYNARRAY(int,max,n); + { IntVarRanges it(x); int i=0; + while (it()) { min[i]=it.min(); max[i]=it.max(); ++it; ++i; } } + YAP_Term lst = YAP_TermNil(); + for (;n--;) + { + YAP_Term args[2]; + args[0] = YAP_MkIntTerm(min[n]); + args[1] = YAP_MkIntTerm(max[n]); + YAP_Term range = YAP_MkApplTerm(gecode_COMMA2,2,args); + lst = YAP_MkPairTerm(range,lst); + } + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_intvar_values(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + IntVar x = gecode_IntVar_from_term(space, YAP_ARG3); + int n = x.size(); + DYNARRAY(int,a,n); + { IntVarValues it(x); int i=0; + while (it()) { a[i]=it.val(); ++it; ++i; } } + YAP_Term lst = YAP_TermNil(); + for (;n--;) + { + lst = YAP_MkPairTerm(YAP_MkIntTerm(a[n]),lst); + } + return YAP_Unify(result,lst); + } + + // INFO ON BOOLVARS + static YAP_Bool gecode_boolvar_assigned(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG2); + return (x.assigned()) ? TRUE : FALSE; + } + + static YAP_Bool gecode_boolvar_min(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.min())); + } + + static YAP_Bool gecode_boolvar_max(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.max())); + } + + static YAP_Bool gecode_boolvar_med(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.med())); + } + + static YAP_Bool gecode_boolvar_val(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.val())); + } + + static YAP_Bool gecode_boolvar_size(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.size())); + } + + static YAP_Bool gecode_boolvar_width(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.width())); + } + + static YAP_Bool gecode_boolvar_regret_min(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.regret_min())); + } + + static YAP_Bool gecode_boolvar_regret_max(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.regret_max())); + } + + // INFO ON SETVARS + static YAP_Bool gecode_setvar_assigned(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG2); + return (x.assigned()) ? TRUE : FALSE; + } + + static YAP_Bool gecode_setvar_glbSize(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.glbSize())); + } + + static YAP_Bool gecode_setvar_lubSize(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.lubSize())); + } + + static YAP_Bool gecode_setvar_unknownSize(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.unknownSize())); + } + + static YAP_Bool gecode_setvar_cardMin(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.cardMin())); + } + + static YAP_Bool gecode_setvar_cardMax(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.cardMax())); + } + + static YAP_Bool gecode_setvar_lubMin(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.lubMin())); + } + + static YAP_Bool gecode_setvar_lubMax(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.lubMax())); + } + + static YAP_Bool gecode_setvar_glbMin(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.glbMin())); + } + + static YAP_Bool gecode_setvar_glbMax(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkIntTerm(x.glbMax())); + } + + static YAP_Bool gecode_setvar_glb_ranges(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + int n = 0; + { SetVarGlbRanges it(x); while (it()) { ++n; ++it; } } + DYNARRAY(int,min,n); + DYNARRAY(int,max,n); + { SetVarGlbRanges it(x); int i=0; + while (it()) { min[i]=it.min(); max[i]=it.max(); ++it; ++i; } } + YAP_Term lst = YAP_TermNil(); + for (;n--;) + { + YAP_Term args[2]; + args[0] = YAP_MkIntTerm(min[n]); + args[1] = YAP_MkIntTerm(max[n]); + YAP_Term range = YAP_MkApplTerm(gecode_COMMA2,2,args); + lst = YAP_MkPairTerm(range,lst); + } + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_setvar_lub_ranges(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + int n = 0; + { SetVarLubRanges it(x); while (it()) { ++n; ++it; } } + DYNARRAY(int,min,n); + DYNARRAY(int,max,n); + { SetVarLubRanges it(x); int i=0; + while (it()) { min[i]=it.min(); max[i]=it.max(); ++it; ++i; } } + YAP_Term lst = YAP_TermNil(); + for (;n--;) + { + YAP_Term args[2]; + args[0] = YAP_MkIntTerm(min[n]); + args[1] = YAP_MkIntTerm(max[n]); + YAP_Term range = YAP_MkApplTerm(gecode_COMMA2,2,args); + lst = YAP_MkPairTerm(range,lst); + } + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_setvar_unknown_ranges(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + int n = 0; + { SetVarUnknownRanges it(x); while (it()) { ++n; ++it; } } + DYNARRAY(int,min,n); + DYNARRAY(int,max,n); + { SetVarUnknownRanges it(x); int i=0; + while (it()) { min[i]=it.min(); max[i]=it.max(); ++it; ++i; } } + YAP_Term lst = YAP_TermNil(); + for (;n--;) + { + YAP_Term args[2]; + args[0] = YAP_MkIntTerm(min[n]); + args[1] = YAP_MkIntTerm(max[n]); + YAP_Term range = YAP_MkApplTerm(gecode_COMMA2,2,args); + lst = YAP_MkPairTerm(range,lst); + } + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_setvar_glb_values(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + DYNARRAY(YAP_Term,elems,x.glbSize()); + SetVarGlbValues it(x); + int n = 0; + while (it()) { elems[n] = YAP_MkIntTerm(it.val()); ++it; ++n; } + YAP_Term lst = YAP_TermNil(); + for (;n--;) lst = YAP_MkPairTerm(elems[n],lst); + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_setvar_lub_values(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + DYNARRAY(YAP_Term,elems,x.lubSize()); + SetVarLubValues it(x); + int n = 0; + while (it()) { elems[n] = YAP_MkIntTerm(it.val()); ++it; ++n; } + YAP_Term lst = YAP_TermNil(); + for (;n--;) lst = YAP_MkPairTerm(elems[n],lst); + return YAP_Unify(result,lst); + } + + static YAP_Bool gecode_setvar_unknown_values(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + SetVar x = gecode_SetVar_from_term(space, YAP_ARG3); + DYNARRAY(YAP_Term,elems,x.unknownSize()); + SetVarUnknownValues it(x); + int n = 0; + while (it()) { elems[n] = YAP_MkIntTerm(it.val()); ++it; ++n; } + YAP_Term lst = YAP_TermNil(); + for (;n--;) lst = YAP_MkPairTerm(elems[n],lst); + return YAP_Unify(result,lst); + } + + // INFO ON FLOATVARS + static YAP_Bool gecode_floatvar_assigned(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG2); + return (x.assigned()) ? TRUE : FALSE; + } + + static YAP_Bool gecode_floatvar_min(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkFloatTerm(x.min())); + } + + static YAP_Bool gecode_floatvar_max(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkFloatTerm(x.max())); + } + + static YAP_Bool gecode_floatvar_med(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkFloatTerm(x.med())); + } + + static YAP_Bool gecode_floatvar_size(void) + { + YAP_Term result = YAP_ARG1; + GenericSpace* space = gecode_Space_from_term(YAP_ARG2); + FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG3); + return YAP_Unify(result, YAP_MkFloatTerm(x.size())); + } + + static inline Reify + gecode_Reify_from_term(YAP_Term t) + { + return * (Reify*) YAP_OpaqueObjectFromTerm(t); + } + + #define gecode_int_from_term YAP_IntOfTerm + + #define gecode_double_from_term YAP_FloatOfTerm + +#include "gecode_yap_cc_forward_auto_generated.icc" +#include "gecode_yap_cc_impl_auto_generated.icc" + + static YAP_opaque_tag_t gecode_reify_tag; + static YAP_opaque_handler_t gecode_reify_handler; + + static YAP_Bool + gecode_reify_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Term gecode_term_from_reify(Reify r) + { + YAP_Term term = + YAP_NewOpaqueObject(gecode_reify_tag, sizeof(Reify)); + Reify *ptr = + (Reify*) YAP_OpaqueObjectFromTerm(term); + *ptr = r; + return term; + } + + static YAP_Bool gecode_new_reify(void) + { + GenericSpace* space = gecode_Space_from_term(YAP_ARG1); + BoolVar b = gecode_BoolVar_from_term(space, YAP_ARG2); + ReifyMode flag = gecode_ReifyMode_from_term(YAP_ARG3); + Reify r = Reify(b,flag); + + YAP_Term term = gecode_term_from_reify(r); + return YAP_Unify(YAP_ARG4, term); + } + + static YAP_opaque_tag_t gecode_tupleset_tag; + static YAP_opaque_handler_t gecode_tupleset_handler; + + static YAP_Bool gecode_tupleset_fail_handler(YAP_Term p) + { + return TRUE; + } + + static YAP_Bool + gecode_tupleset_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Bool gecode_new_tupleset(void) + { + YAP_Term term = + YAP_NewOpaqueObject(gecode_tupleset_tag, sizeof(TupleSet)); + TupleSet *ts = new (YAP_OpaqueObjectFromTerm(term)) TupleSet; + YAP_Term t = YAP_ARG1; + while (YAP_IsPairTerm( t ) ) { + YAP_Term l = YAP_HeadOfTerm(t); + int n = gecode_list_length(l); + int i = 0; + IntArgs is(n); + while (YAP_IsPairTerm( l ) ) { + YAP_Term ll = YAP_HeadOfTerm(l); + if (!YAP_IsIntTerm(ll)) { + cerr << "non-integer on tuple set" << endl; exit(1); + } + is[i++] = YAP_IntOfTerm(ll); + l = YAP_TailOfTerm(l); + } + ts->add(is); + if (l != YAP_TermNil()) { + cerr << "non-list on tuple set" << endl; exit(1); + } + t = YAP_TailOfTerm(t); + } + if (t != YAP_TermNil()) { + cerr << "non-list on tuple set" << endl; exit(1); + } + ts->finalize(); + return YAP_Unify(YAP_ARG2, term); + } + + static YAP_opaque_tag_t gecode_dfa_tag; + static YAP_opaque_handler_t gecode_dfa_handler; + + static YAP_Bool gecode_dfa_fail_handler(YAP_Term p) + { + return TRUE; + } + + static YAP_Bool + gecode_dfa_write_handler + (FILE *stream, YAP_opaque_tag_t type, void *p, int flags) + { + fprintf(stream,"", p); + return TRUE; + } + + static YAP_Bool gecode_new_dfa(void) + { + YAP_Term term = + YAP_NewOpaqueObject(gecode_dfa_tag, sizeof(DFA)); + // DFA ts = new (YAP_OpaqueObjectFromTerm(term)) DFA; + YAP_Term t2 = YAP_ARG2; + int s0 = YAP_IntOfTerm(t2); + YAP_Term t3 = YAP_ARG3; + int n = gecode_list_length(t3), i=0; + DFA::Transition t[1024]; + if (n > 1024) cerr<< "DFA too long" << endl; + while (YAP_IsPairTerm( t3 ) ) { + YAP_Term tt = YAP_HeadOfTerm(t3); + int is, sy, os; + is = YAP_IntOfTerm(YAP_ArgOfTerm(1,tt)); + sy = YAP_IntOfTerm(YAP_ArgOfTerm(2,tt)); + os = YAP_IntOfTerm(YAP_ArgOfTerm(3,tt)); + t[i++] = DFA::Transition(is, sy, os); + t3 = YAP_TailOfTerm(t3); + } + if (t3 != YAP_TermNil()) { + cerr << "non-list on DFA" << endl; exit(1); + } + YAP_Term t4 = YAP_ARG4; + n = gecode_list_length(t4)+1; + i=0; + int s[n]; + s[n-1] = -1; + while (YAP_IsPairTerm( t4 ) ) { + YAP_Term tt = YAP_HeadOfTerm(t4); + s[i++] = YAP_IntOfTerm(tt); + t4 = YAP_TailOfTerm(t4); + } + if (t4 != YAP_TermNil()) { + cerr << "non-list on DFA" << endl; exit(1); + } + new (YAP_OpaqueObjectFromTerm(term)) DFA(s0, t, s); + return YAP_Unify(YAP_ARG1, term); + } + + void gecode_init(void) + { + { YAP_Atom X= YAP_LookupAtom("true"); + gecode_TRUE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("false"); + gecode_FALSE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom(","); + YAP_AtomGetHold(X); + gecode_COMMA2 = YAP_MkFunctor(X,2); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_NONE"); + gecode_INT_VAR_NONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_DEGREE_MIN"); + gecode_INT_VAR_DEGREE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_DEGREE_MAX"); + gecode_INT_VAR_DEGREE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_MIN_MIN"); + gecode_INT_VAR_MIN_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_MIN_MAX"); + gecode_INT_VAR_MIN_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_MAX_MIN"); + gecode_INT_VAR_MAX_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_MAX_MAX"); + gecode_INT_VAR_MAX_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_SIZE_MIN"); + gecode_INT_VAR_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_SIZE_MAX"); + gecode_INT_VAR_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_DEGREE_SIZE_MIN"); + gecode_INT_VAR_DEGREE_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_DEGREE_SIZE_MAX"); + gecode_INT_VAR_DEGREE_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_REGRET_MIN_MIN"); + gecode_INT_VAR_REGRET_MIN_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_REGRET_MIN_MAX"); + gecode_INT_VAR_REGRET_MIN_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_REGRET_MAX_MIN"); + gecode_INT_VAR_REGRET_MAX_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAR_REGRET_MAX_MAX"); + gecode_INT_VAR_REGRET_MAX_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_MIN"); + gecode_INT_VAL_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_MED"); + gecode_INT_VAL_MED = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_MAX"); + gecode_INT_VAL_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_SPLIT_MIN"); + gecode_INT_VAL_SPLIT_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_SPLIT_MAX"); + gecode_INT_VAL_SPLIT_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_RANGE_MIN"); + gecode_INT_VAL_RANGE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VAL_RANGE_MAX"); + gecode_INT_VAL_RANGE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VALUES_MIN"); + gecode_INT_VALUES_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("INT_VALUES_MAX"); + gecode_INT_VALUES_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAL_MIN"); + gecode_BOOL_VAL_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAL_RND"); + gecode_BOOL_VAL_RND = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_NONE"); + gecode_SET_VAR_NONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_DEGREE_MIN"); + gecode_SET_VAR_DEGREE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_DEGREE_MAX"); + gecode_SET_VAR_DEGREE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_MIN_MIN"); + gecode_SET_VAR_MIN_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_MIN_MAX"); + gecode_SET_VAR_MIN_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_MAX_MIN"); + gecode_SET_VAR_MAX_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_MAX_MAX"); + gecode_SET_VAR_MAX_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_SIZE_MIN"); + gecode_SET_VAR_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_SIZE_MAX"); + gecode_SET_VAR_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_DEGREE_SIZE_MIN"); + gecode_SET_VAR_DEGREE_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAR_DEGREE_SIZE_MAX"); + gecode_SET_VAR_DEGREE_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MIN_INC"); + gecode_SET_VAL_MIN_INC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MED_INC"); + gecode_SET_VAL_MED_INC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MAX_INC"); + gecode_SET_VAL_MAX_INC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MIN_EXC"); + gecode_SET_VAL_MIN_EXC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MED_EXC"); + gecode_SET_VAL_MED_EXC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("SET_VAL_MAX_EXC"); + gecode_SET_VAL_MAX_EXC = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_NONE"); + gecode_BOOL_VAR_NONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_RND"); + gecode_BOOL_VAR_RND = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + // { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_MERIT_MIN"); + // gecode_BOOL_VAR_MERIT_MIN = YAP_MkAtomTerm(X); + // YAP_AtomGetHold(X); } + // { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_MERIT_MAX"); + // gecode_BOOL_VAR_MERIT_MAX = YAP_MkAtomTerm(X); + // YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_DEGREE_MIN"); + gecode_BOOL_VAR_DEGREE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_DEGREE_MAX"); + gecode_BOOL_VAR_DEGREE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_AFC_MIN"); + gecode_BOOL_VAR_AFC_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_AFC_MAX"); + gecode_BOOL_VAR_AFC_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_ACTION_MIN"); + gecode_BOOL_VAR_ACTION_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_ACTION_MAX"); + gecode_BOOL_VAR_MAX_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_CHB_MIN"); + gecode_BOOL_VAR_CHB_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("BOOL_VAR_CHB_MAX"); + gecode_BOOL_VAR_CHB_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + + + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_NONE"); + gecode_FLOAT_VAR_NONE = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_DEGREE_MIN"); + gecode_FLOAT_VAR_DEGREE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_DEGREE_MAX"); + gecode_FLOAT_VAR_DEGREE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_MIN_MIN"); + gecode_FLOAT_VAR_MIN_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_MIN_MAX"); + gecode_FLOAT_VAR_MIN_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_MAX_MIN"); + gecode_FLOAT_VAR_MAX_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_MAX_MAX"); + gecode_FLOAT_VAR_MAX_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_SIZE_MIN"); + gecode_FLOAT_VAR_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_SIZE_MAX"); + gecode_FLOAT_VAR_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_DEGREE_SIZE_MIN"); + gecode_FLOAT_VAR_DEGREE_SIZE_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAR_DEGREE_SIZE_MAX"); + gecode_FLOAT_VAR_DEGREE_SIZE_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAL_SPLIT_MIN"); + gecode_FLOAT_VAL_SPLIT_MIN = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } + { YAP_Atom X= YAP_LookupAtom("FLOAT_VAL_SPLIT_MAX"); + gecode_FLOAT_VAL_SPLIT_MAX = YAP_MkAtomTerm(X); + YAP_AtomGetHold(X); } +#include "gecode_yap_cc_init_auto_generated.icc" + // opaque spaces + gecode_space_handler.fail_handler = gecode_space_fail_handler; + gecode_space_handler.write_handler = gecode_space_write_handler; + gecode_space_tag = YAP_NewOpaqueType(&gecode_space_handler); + YAP_UserCPredicate("gecode_new_space", gecode_new_space, 1); + // opaque engines + gecode_engine_handler.fail_handler = gecode_engine_fail_handler; + gecode_engine_handler.write_handler = gecode_engine_write_handler; + gecode_engine_tag = YAP_NewOpaqueType(&gecode_engine_handler); + YAP_UserCPredicate("gecode_new_engine", gecode_new_engine, 3); + // opaque reifications + gecode_reify_handler.fail_handler = NULL; + gecode_reify_handler.write_handler = gecode_reify_write_handler; + gecode_reify_tag = YAP_NewOpaqueType(&gecode_reify_handler); + YAP_UserCPredicate("gecode_new_reify", gecode_new_reify, 4); + // Opaque TupleSet + gecode_tupleset_handler.fail_handler = gecode_tupleset_fail_handler; + gecode_tupleset_handler.write_handler = gecode_tupleset_write_handler; + gecode_tupleset_tag = YAP_NewOpaqueType(&gecode_tupleset_handler); + YAP_UserCPredicate("gecode_new_tupleset", gecode_new_tupleset, 2); + // Opaque DFA + gecode_dfa_handler.fail_handler = gecode_dfa_fail_handler; + gecode_dfa_handler.write_handler = gecode_dfa_write_handler; + gecode_dfa_tag = YAP_NewOpaqueType(&gecode_dfa_handler); + YAP_UserCPredicate("gecode_new_dfa", gecode_new_dfa, 4); +#ifdef DISJUNCTOR + // opaque disjunctors and clauses + gecode_disjunctor_handler.write_handler = gecode_disjunctor_write_handler; + gecode_disjunctor_tag = YAP_NewOpaqueType(&gecode_disjunctor_handler); + gecode_disjunctor_clause_handler.write_handler = gecode_clause_write_handler; + gecode_disjunctor_clause_tag = + YAP_NewOpaqueType(&gecode_disjunctor_clause_handler); + YAP_UserCPredicate("gecode_new_disjunctor", gecode_new_disjunctor, 2); + YAP_UserCPredicate("gecode_new_clause", gecode_new_clause, 2); + YAP_UserCPredicate("gecode_clause_intvar_forward", gecode_clause_intvar_forward, 3); + YAP_UserCPredicate("gecode_clause_boolvar_forward", gecode_clause_boolvar_forward, 3); + YAP_UserCPredicate("gecode_clause_setvar_forward", gecode_clause_setvar_forward, 3); +#endif + // backtracking search using an engine + YAP_UserBackCutCPredicate("gecode_engine_search", + gecode_engine_search, gecode_engine_search, + NULL, 2, 0); + // creating variables + YAP_UserCPredicate("gecode_new_intvar_from_bounds", + gecode_new_intvar_from_bounds, 4); + YAP_UserCPredicate("gecode_new_intvar_from_intset", + gecode_new_intvar_from_intset, 3); + YAP_UserCPredicate("gecode_new_floatvar_from_bounds", + gecode_new_floatvar_from_bounds, 4); + YAP_UserCPredicate("gecode_new_boolvar", gecode_new_boolvar, 2); + YAP_UserCPredicate("gecode_new_setvar_1", gecode_new_setvar_1, 8); + YAP_UserCPredicate("gecode_new_setvar_2", gecode_new_setvar_2, 7); + YAP_UserCPredicate("gecode_new_setvar_3", gecode_new_setvar_3, 6); + YAP_UserCPredicate("gecode_new_setvar_4", gecode_new_setvar_4, 7); + YAP_UserCPredicate("gecode_new_setvar_5", gecode_new_setvar_5, 6); + YAP_UserCPredicate("gecode_new_setvar_6", gecode_new_setvar_6, 5); + YAP_UserCPredicate("gecode_new_setvar_7", gecode_new_setvar_7, 7); + YAP_UserCPredicate("gecode_new_setvar_8", gecode_new_setvar_8, 6); + YAP_UserCPredicate("gecode_new_setvar_9", gecode_new_setvar_9, 5); + YAP_UserCPredicate("gecode_new_setvar_10", gecode_new_setvar_10, 6); + YAP_UserCPredicate("gecode_new_setvar_11", gecode_new_setvar_11, 5); + YAP_UserCPredicate("gecode_new_setvar_12", gecode_new_setvar_12, 4); + YAP_UserCPredicate("gecode_space_minimize", gecode_space_minimize, 2); + YAP_UserCPredicate("gecode_space_maximize", gecode_space_maximize, 2); + YAP_UserCPredicate("gecode_space_minimize_ratio", gecode_space_minimize_ratio, 3); + YAP_UserCPredicate("gecode_space_maximize_ratio", gecode_space_maximize_ratio, 3); + // INFO ON INTVARS + YAP_UserCPredicate("gecode_intvar_assigned", gecode_intvar_assigned, 2); + YAP_UserCPredicate("gecode_intvar_min", gecode_intvar_min, 3); + YAP_UserCPredicate("gecode_intvar_max", gecode_intvar_max, 3); + YAP_UserCPredicate("gecode_intvar_med", gecode_intvar_med, 3); + YAP_UserCPredicate("gecode_intvar_val", gecode_intvar_val, 3); + YAP_UserCPredicate("gecode_intvar_size", gecode_intvar_size, 3); + YAP_UserCPredicate("gecode_intvar_width", gecode_intvar_width, 3); + YAP_UserCPredicate("gecode_intvar_regret_min", gecode_intvar_regret_min, 3); + YAP_UserCPredicate("gecode_intvar_regret_max", gecode_intvar_regret_max, 3); + YAP_UserCPredicate("gecode_intvar_ranges", gecode_intvar_ranges, 3); + YAP_UserCPredicate("gecode_intvar_values", gecode_intvar_values, 3); + // INFO ON BOOLVARS + YAP_UserCPredicate("gecode_boolvar_assigned", gecode_boolvar_assigned, 2); + YAP_UserCPredicate("gecode_boolvar_min", gecode_boolvar_min, 3); + YAP_UserCPredicate("gecode_boolvar_max", gecode_boolvar_max, 3); + YAP_UserCPredicate("gecode_boolvar_med", gecode_boolvar_med, 3); + YAP_UserCPredicate("gecode_boolvar_val", gecode_boolvar_val, 3); + YAP_UserCPredicate("gecode_boolvar_size", gecode_boolvar_size, 3); + YAP_UserCPredicate("gecode_boolvar_width", gecode_boolvar_width, 3); + YAP_UserCPredicate("gecode_boolvar_regret_min", gecode_boolvar_regret_min, 3); + YAP_UserCPredicate("gecode_boolvar_regret_max", gecode_boolvar_regret_max, 3); + // INFO ON SETVARS + YAP_UserCPredicate("gecode_setvar_assigned", gecode_setvar_assigned, 2); + YAP_UserCPredicate("gecode_setvar_glbSize", gecode_setvar_glbSize, 3); + YAP_UserCPredicate("gecode_setvar_lubSize", gecode_setvar_lubSize, 3); + YAP_UserCPredicate("gecode_setvar_unknownSize", gecode_setvar_unknownSize, 3); + YAP_UserCPredicate("gecode_setvar_cardMin", gecode_setvar_cardMin, 3); + YAP_UserCPredicate("gecode_setvar_cardMax", gecode_setvar_cardMax, 3); + YAP_UserCPredicate("gecode_setvar_lubMin", gecode_setvar_lubMin, 3); + YAP_UserCPredicate("gecode_setvar_lubMax", gecode_setvar_lubMax, 3); + YAP_UserCPredicate("gecode_setvar_glbMin", gecode_setvar_glbMin, 3); + YAP_UserCPredicate("gecode_setvar_glbMax", gecode_setvar_glbMax, 3); + YAP_UserCPredicate("gecode_setvar_glb_ranges", gecode_setvar_glb_ranges, 3); + YAP_UserCPredicate("gecode_setvar_lub_ranges", gecode_setvar_lub_ranges, 3); + YAP_UserCPredicate("gecode_setvar_unknown_ranges", gecode_setvar_unknown_ranges, 3); + YAP_UserCPredicate("gecode_setvar_glb_values", gecode_setvar_glb_values, 3); + YAP_UserCPredicate("gecode_setvar_lub_values", gecode_setvar_lub_values, 3); + YAP_UserCPredicate("gecode_setvar_unknown_values", gecode_setvar_unknown_values, 3); + YAP_UserCPredicate("gecode_space_use_keep_index", gecode_space_use_keep_index, 2); + YAP_UserCPredicate("gecode_intvar_keep", gecode_intvar_keep, 3); + YAP_UserCPredicate("gecode_boolvar_keep", gecode_boolvar_keep, 3); + YAP_UserCPredicate("gecode_setvar_keep", gecode_setvar_keep, 3); + // INFO ON FLOATVARS + YAP_UserCPredicate("gecode_floatvar_assigned", gecode_floatvar_assigned, 2); + YAP_UserCPredicate("gecode_floatvar_min", gecode_floatvar_min, 3); + YAP_UserCPredicate("gecode_floatvar_max", gecode_floatvar_max, 3); + YAP_UserCPredicate("gecode_floatvar_med", gecode_floatvar_med, 3); + YAP_UserCPredicate("gecode_floatvar_size", gecode_floatvar_size, 3); + } +} diff --git a/packages/gecode/gecode6_yap_hand_written.yap b/packages/gecode/gecode6_yap_hand_written.yap new file mode 100644 index 000000000..e3e32b8ad --- /dev/null +++ b/packages/gecode/gecode6_yap_hand_written.yap @@ -0,0 +1,1343 @@ +%% -*- prolog -*- +%%============================================================================= +%% Copyright (C) 2011 by Denys Duchier +%% +%% This program is free software: you can redistribute it and/or modify it +%% under the terms of the GNU Lesser General Public License as published by the +%% Free Software Foundation, either version 3 of the License, or (at your +%% option) any later version. +%% +%% This program is distributed in the hope that it will be useful, but WITHOUT +%% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +%% more details. +%% +%% You should have received a copy of the GNU Lesser General Public License +%% along with this program. If not, see . +%%============================================================================= + +:- module(gecode, [(:=)/2, op(500, xfx, ':='), + (+=)/2, op(500, xfx, '+=')]). + + +/** @defgroup Gecode Gecode Interface + +@ingroup packages +@{ + + +The gecode library intreface was designed and implemented by Denis +Duchier, with recent work by Vítor Santos Costa to port it to version 4 +of gecode and to have an higher level interface, + + + @addtogroup The_Gecode_Interface The Gecode Interface +@ingroup Gecode +@{ + +This text is due to Denys Duchier. The gecode interface requires + +~~~~~{.prolog} +:- use_module(library(gecode)). +~~~~~ +Several example programs are available with the distribution. + ++ CREATING A SPACE + +A space is gecodes data representation for a store of constraints: + +~~~~~{.prolog} + Space := space +~~~~~ + ++ CREATING VARIABLES + +Unlike in Gecode, variable objects are not bound to a specific Space. Each one +actually contains an index with which it is possible to access a Space-bound +Gecode variable. Variables can be created using the following expressions: + +~~~~~{.prolog} + IVar := intvar(Space,SPEC...) + BVar := boolvar(Space) + SVar := setvar(Space,SPEC...) +~~~~~ + +where SPEC... is the same as in Gecode. For creating lists of variables use +the following variants: + +~~~~~{.prolog} + IVars := intvars(Space,N,SPEC...) + BVars := boolvars(Space,N,SPEC...) + SVars := setvars(Space,N,SPEC...) +~~~~~ + +where N is the number of variables to create (just like for XXXVarArray in +Gecode). Sometimes an IntSet is necessary: + +~~~~~{.prolog} + ISet := intset([SPEC...]) +~~~~~ + +where each SPEC is either an integer or a pair (I,J) of integers. An IntSet +describes a set of ints by providing either intervals, or integers (which stand +for an interval of themselves). It might be tempting to simply represent an +IntSet as a list of specs, but this would be ambiguous with IntArgs which, +here, are represented as lists of ints. + +~~~~~{.prolog} + Space += keep(Var) + Space += keep(Vars) +~~~~~ + +Variables can be marked as "kept". In this case, only such variables will be +explicitly copied during search. This could bring substantial benefits in +memory usage. Of course, in a solution, you can then only look at variables +that have been "kept". If no variable is marked as "kept", then they are all +kept. Thus marking variables as "kept" is purely an optimization. + ++ CONSTRAINTS AND BRANCHINGS + +all constraint and branching posting functions are available just like in +Gecode. Wherever a XXXArgs or YYYSharedArray is expected, simply use a list. +At present, there is no support for minimodel-like constraint posting. +Constraints and branchings are added to a space using: + +~~~~~{.prolog} + Space += CONSTRAINT + Space += BRANCHING +~~~~~ + +For example: + +~~~~~{.prolog} + Space += rel(X,'IRT_EQ',Y) +~~~~~ + +arrays of variables are represented by lists of variables, and constants are +represented by atoms with the same name as the Gecode constant +(e.g. 'INT_VAR_SIZE_MIN'). + ++ SEARCHING FOR SOLUTIONS + +~~~~~{.prolog} + SolSpace := search(Space) +~~~~~ + +This is a backtrackable predicate that enumerates all solution spaces +(SolSpace). It may also take options: + +~~~~~{.prolog} + SolSpace := search(Space,Options) +~~~~~ + +Options is a list whose elements maybe: + ++ restart +to select the Restart search engine ++ threads=N +to activate the parallel search engine and control the number of +workers (see Gecode doc) ++ c_d=N +to set the commit distance for recomputation ++ a_d=N +to set the adaptive distance for recomputation + + + ++ EXTRACTING INFO FROM A SOLUTION + +An advantage of non Space-bound variables, is that you can use them both to +post constraints in the original space AND to consult their values in +solutions. Below are methods for looking up information about variables. Each +of these methods can either take a variable as argument, or a list of +variables, and returns resp. either a value, or a list of values: + +~~~~~{.prolog} + Val := assigned(Space,X) + + Val := min(Space,X) + Val := max(Space,X) + Val := med(Space,X) + Val := val(Space,X) + Val := size(Space,X) + Val := width(Space,X) + Val := regret_min(Space,X) + Val := regret_max(Space,X) + + Val := glbSize(Space,V) + Val := lubSize(Space,V) + Val := unknownSize(Space,V) + Val := cardMin(Space,V) + Val := cardMax(Space,V) + Val := lubMin(Space,V) + Val := lubMax(Space,V) + Val := glbMin(Space,V) + Val := glbMax(Space,V) + Val := glb_ranges(Space,V) + Val := lub_ranges(Space,V) + Val := unknown_ranges(Space,V) + Val := glb_values(Space,V) + Val := lub_values(Space,V) + Val := unknown_values(Space,V) +~~~~~ + ++ DISJUNCTORS + +Disjunctors provide support for disjunctions of clauses, where each clause is a +conjunction of constraints: + +~~~~~{.prolog} + C1 or C2 or ... or Cn +~~~~~ + +Each clause is executed "speculatively": this means it does not affect the main +space. When a clause becomes failed, it is discarded. When only one clause +remains, it is committed: this means that it now affects the main space. + +Example: + +Consider the problem where either X=Y=0 or X=Y+(1 or 2) for variable X and Y +that take values in 0..3. + +~~~~~{.prolog} + Space := space, + [X,Y] := intvars(Space,2,0,3), +~~~~~ + +First, we must create a disjunctor as a manager for our 2 clauses: + +~~~~~{.prolog} + Disj := disjunctor(Space), +~~~~~ + +We can now create our first clause: + +~~~~~{.prolog} + C1 := clause(Disj), +~~~~~ + +This clause wants to constrain X and Y to 0. However, since it must be +executed "speculatively", it must operate on new variables X1 and Y1 that +shadow X and Y: + +~~~~~{.prolog} + [X1,Y1] := intvars(C1,2,0,3), + C1 += forward([X,Y],[X1,Y1]), +~~~~~ + +The forward(...) stipulation indicates which global variable is shadowed by +which clause-local variable. Now we can post the speculative clause-local +constraints for X=Y=0: + +~~~~~{.prolog} + C1 += rel(X1,'IRT_EQ',0), + C1 += rel(Y1,'IRT_EQ',0), +~~~~~ + +We now create the second clause which uses X2 and Y2 to shadow X and Y: + +~~~~~{.prolog} + C2 := clause(Disj), + [X2,Y2] := intvars(C2,2,0,3), + C2 += forward([X,Y],[X2,Y2]), +~~~~~ + +However, this clause also needs a clause-local variable Z2 taking values 1 or +2 in order to post the clause-local constraint X2=Y2+Z2: + +~~~~~{.prolog} + Z2 := intvar(C2,1,2), + C2 += linear([-1,1,1],[X2,Y2,Z2],'IRT_EQ',0), +~~~~~ + +Finally, we can branch and search: + +~~~~~{.prolog} + Space += branch([X,Y],'INT_VAR_SIZE_MIN','INT_VAL_MIN'), + SolSpace := search(Space), +~~~~~ + +and lookup values of variables in each solution: + +~~~~~{.prolog} + [X_,Y_] := val(SolSpace,[X,Y]). +~~~~~ + + + + +*/ + +:- use_module(library(debug)). + +:- op(500, xfx, user:':='). +:- op(500, xfx, user:'+='). +:- load_foreign_files([gecode_yap],[],gecode_init). + +is_int(X,Y) :- integer(X), Y=X. +is_int(X) :- integer(X). + +is_bool_(true,true). +is_bool_(false,false). +is_bool(X,Y) :- nonvar(X), Y=X. +is_bool(X) :- is_bool(X,_). + +is_IntVar_('IntVar'(I,K),N) :- + integer(I), + integer(K), + nb_getval(gecode_space_use_keep_index,B), + (B=true -> N=K ; N=I). +is_FloatVar_('FloatVar'(I,K),N) :- + integer(I), + integer(K), + nb_getval(gecode_space_use_keep_index,B), + (B=true -> N=K ; N=I). +is_BoolVar_('BoolVar'(I,K),N) :- + integer(I), + integer(K), + nb_getval(gecode_space_use_keep_index,B), + (B=true -> N=K ; N=I). +is_SetVar_('SetVar'(I,K),N) :- + integer(I), + integer(K), + nb_getval(gecode_space_use_keep_index,B), + (B=true -> N=K ; N=I). + +is_IntVar(X,I) :- nonvar(X), is_IntVar_(X,I). +is_BoolVar(X,I) :- nonvar(X), is_BoolVar_(X,I). +is_FloatVar(X,I) :- nonvar(X), is_FloatVar_(X,I). +is_SetVar(X,I) :- nonvar(X), is_SetVar_(X,I). + +is_IntVar(X) :- is_IntVar(X,_). +is_BoolVar(X) :- is_BoolVar(X,_). +is_FloatVar(X) :- is_FloatVar(X,_). +is_SetVar(X) :- is_SetVar(X,_). + +is_IntVarArgs_([],[]). +is_IntVarArgs_([H|T],[H2|T2]) :- is_IntVar(H,H2), is_IntVarArgs(T,T2). +is_IntVarArgs(X,Y) :- nonvar(X), is_IntVarArgs_(X,Y). +is_IntVarArgs(X) :- \+ \+ is_IntVarArgs(X,_). + +is_BoolVarArgs_([],[]). +is_BoolVarArgs_([H|T],[H2|T2]) :- is_BoolVar(H,H2), is_BoolVarArgs(T,T2). +is_BoolVarArgs(X,Y) :- nonvar(X), is_BoolVarArgs_(X,Y). +is_BoolVarArgs(X) :- \+ \+ is_BoolVarArgs(X,_). + +is_FloatVarArgs_([],[]). +is_FloatVarArgs_([H|T],[H2|T2]) :- is_FloatVar(H,H2), is_FloatVarArgs(T,T2). +is_FloatVarArgs(X,Y) :- nonvar(X), is_FloatVarArgs_(X,Y). +is_FloatVarArgs(X) :- \+ \+ is_FloatVarArgs(X,_). + +is_FloatValArgs_([],[]). +is_FloatValArgs_([H|T],[H2|T2]) :- is_FloatVar(H,H2), is_FloatValArgs(T,T2). +is_FloatValArgs(X,Y) :- nonvar(X), is_FloatValArgs_(X,Y). +is_FloatValArgs(X) :- \+ \+ is_FloatValArgs(X,_). + +is_SetVarArgs_([],[]). +is_SetVarArgs_([H|T],[H2|T2]) :- is_SetVar(H,H2), is_SetVarArgs(T,T2). +is_SetVarArgs(X,Y) :- nonvar(X), is_SetVarArgs_(X,Y). +is_SetVarArgs(X) :- \+ \+ is_SetVarArgs(X,_). + +is_IntArgs_([],[]). +is_IntArgs_([H|T],[H|T2]) :- integer(H), is_IntArgs(T,T2). +is_IntArgs(X,Y) :- nonvar(X), is_IntArgs_(X,Y). +is_IntArgs(X) :- \+ \+ is_IntArgs(X,_). + +is_IntSharedArray(X) :- is_IntArgs(X). +is_IntSharedArray(X,Y) :- is_IntArgs(X,Y). + +is_TaskTypeArgs_([],[]). +is_TaskTypeArgs_([H|T],[H2|T2]) :- is_TaskType(H,H2), is_TaskTypeArgs(T,T2). +is_TaskTypeArgs(X,Y) :- nonvar(X), is_TaskTypeArgs_(X,Y). +is_TaskTypeArgs(X) :- \+ \+ is_TaskTypeArgs(X,_). + +is_IntSet_('IntSet'(L),L). +is_IntSet(X,Y) :- nonvar(X), is_IntSet_(X,Y). +is_IntSet(X) :- is_IntSet(X,_). + +is_IntSetArgs_([],[]). +is_IntSetArgs_([H|T],[H2|T2]) :- is_IntSet(H,H2), is_IntSetArgs(T,T2). +is_IntSetArgs(X,Y) :- nonvar(X), is_IntSetArgs_(X,Y). +is_IntSetArgs(X) :- \+ \+ is_IntSetArgs(X,_). + +is_TupleSet_('TupleSet'(TS),TS). +is_TupleSet(X,Y) :- nonvar(X), is_TupleSet_(X,Y). +is_TupleSet(X) :- is_TupleSet(X,_). + +is_DFA_('DFA'(TS),TS). +is_DFA(X,Y) :- nonvar(X), is_DFA_(X,Y). +is_DFA(X) :- is_DFA(X,_). + +new_intset(X,I,J) :- intset(X,I,J). +new_intset(X,L) :- intset(X,L). + +intset(X, I, J) :- + integer(I), + integer(J), + X='IntSet'([(I,J)]). +intset(X, L) :- + is_list_of_intset_specs(L,L2), + X='IntSet'(L2). + +is_list_of_intset_specs(X,Y) :- + nonvar(X), is_list_of_intset_specs_(X,Y). +is_list_of_intset_specs_([],[]). +is_list_of_intset_specs_([H|T],[H2|T2]) :- + is_intset_spec(H,H2), + is_list_of_intset_specs(T,T2). + +is_intset_spec(X,Y) :- nonvar(X), is_intset_spec_(X,Y). +is_intset_spec_((I,J),(I,J)) :- !, integer(I), integer(J). +is_intset_spec_(I,(I,I)) :- integer(I). + +assert_var(X,Y) :- + var(X) -> X=Y; throw(gecode_error(expected(var))). +assert_is_int(X,Y) :- + integer(X) -> X=Y ; throw(gecode_error(expected(int))). +assert_is_float(X,Y) :- + float(X) -> X=Y ; throw(gecode_error(expected(int))). +assert_is_Space(X,Y) :- + is_Space(X,Y) -> true ; throw(gecode_error(expected(space))). +assert_is_IntSet(X,Y) :- + is_IntSet(X,Y) -> true ; throw(gecode_error(expected(intset))). +assert_is_TupleSet(X,Y) :- + is_TupleSet(X,Y) -> true ; throw(gecode_error(expected(tupleset))). +assert_is_DFA(X,Y) :- + is_DFA(X,Y) -> true ; throw(gecode_error(expected(dfa))). +assert_is_IntVar(X,Y) :- + is_IntVar(X,Y) -> true ; throw(gecode_error(expected(intvar))). +assert_is_BoolVar(X,Y) :- + is_BoolVar(X,Y) -> true ; throw(gecode_error(expected(boolvar))). +assert_is_FloatVar(X,Y) :- + is_FloatVar(X,Y) -> true ; throw(gecode_error(expected(floatvar))). +assert_is_SetVar(X,Y) :- + is_SetVar(X,Y) -> true ; throw(gecode_error(expected(setvar))). +assert_is_IntArgs(X,Y) :- + is_IntArgs(X,Y) -> true ; throw(gecode_error(expected(intargs))). +assert_is_IntVarArgs(X,Y) :- + is_IntVarArgs(X,Y) -> true ; throw(gecode_error(expected(intvarargs))). +assert_is_BoolVarArgs(X,Y) :- + is_BoolVarArgs(X,Y) -> true ; throw(gecode_error(expected(boolvarargs))). +assert_is_FloatVarArgs(X,Y) :- + is_FloatVarArgs(X,Y) -> true ; throw(gecode_error(expected(floatvarargs))). +assert_is_FloatValArgs(X,Y) :- + is_FloatValArgs(X,Y) -> true ; throw(gecode_error(expected(floatvarargs))). +assert_is_SetVarArgs(X,Y) :- + is_SetVarArgs(X,Y) -> true ; throw(gecode_error(expected(setvarargs))). +assert_is_ReifyMode(X,Y) :- + is_ReifyMode(X,Y) -> true ; throw(gecode_error(expected(reifymode))). + +assert_var(X) :- assert_var(X,_). +assert_is_int(X) :- assert_is_int(X,_). +assert_is_float(X) :- assert_is_float(X,_). +assert_is_Space(X) :- assert_is_Space(X,_). +assert_is_IntSet(X) :- assert_is_IntSet(X,_). +assert_is_IntVar(X) :- assert_is_IntVar(X,_). +assert_is_BoolVar(X) :- assert_is_BoolVar(X,_). +assert_is_FloatVar(X) :- assert_is_FloatVar(X,_). +assert_is_SetVar(X) :- assert_is_SetVar(X,_). +assert_is_IntArgs(X) :- assert_is_IntArgs(X,_). +assert_is_IntVarArgs(X) :- assert_is_IntVarArgs(X,_). +assert_is_BoolVarArgs(X) :- assert_is_BoolVarArgs(X,_). +assert_is_FloatVarArgs(X) :- assert_is_FloatVarArgs(X,_). +assert_is_FloatValArgs(X) :- assert_is_FloatValArgs(X,_). +assert_is_SetVarArgs(X) :- assert_is_SetVarArgs(X,_). + +%% Var and Val Branching changed in Gecode 4 to be done as a set of functions, +%% not as an enum. + +is_IntVarBranch_('INT_VAR_NONE'). +is_IntVarBranch_('INT_VAR_RND'(_)). +is_IntVarBranch_('INT_VAR_MERIT_MIN'(_)). +is_IntVarBranch_('INT_VAR_MERIT_MAX'(_)). +is_IntVarBranch_('INT_VAR_DEGREE_MIN'). +is_IntVarBranch_('INT_VAR_DEGREE_MAX'). +is_IntVarBranch_('INT_VAR_AFC_MIN'(_)). +is_IntVarBranch_('INT_VAR_AFC_MAX'(_)). +is_IntVarBranch_('INT_VAR_ACTIVITY_MIN'(_)). +is_IntVarBranch_('INT_VAR_ACTIVITY_MAX'(_)). +is_IntVarBranch_('INT_VAR_MIN_MIN'). +is_IntVarBranch_('INT_VAR_MIN_MAX'). +is_IntVarBranch_('INT_VAR_MAX_MIN'). +is_IntVarBranch_('INT_VAR_MAX_MAX'). +is_IntVarBranch_('INT_VAR_SIZE_MIN'). +is_IntVarBranch_('INT_VAR_SIZE_MAX'). +is_IntVarBranch_('INT_VAR_DEGREE_SIZE_MIN'). +is_IntVarBranch_('INT_VAR_DEGREE_SIZE_MAX'). +is_IntVarBranch_('INT_VAR_AFC_SIZE_MIN'(_)). +is_IntVarBranch_('INT_VAR_AFC_SIZE_MAX'(_)). +is_IntVarBranch_('INT_VAR_ACTIVITY_SIZE_MIN'(_)). +is_IntVarBranch_('INT_VAR_ACTIVITY_SIZE_MAX'(_)). +is_IntVarBranch_('INT_VAR_REGRET_MIN_MIN'). +is_IntVarBranch_('INT_VAR_REGRET_MIN_MAX'). +is_IntVarBranch_('INT_VAR_REGRET_MAX_MIN'). +is_IntVarBranch_('INT_VAR_REGRET_MAX_MAX'). + +is_IntVarBranch_(X, X) :- + is_IntVarBranch_(X). + +is_IntVarBranch(X,Y) :- nonvar(X), is_IntVarBranch_(X,Y). +is_IntVarBranch(X) :- is_IntVarBranch(X,_). + +is_SetVarBranch_('SET_VAR_NONE'). +is_SetVarBranch_('SET_VAR_RND'(_)). +is_SetVarBranch_('SET_VAR_MERIT_MIN'(_)). +is_SetVarBranch_('SET_VAR_MERIT_MAX'(_)). +is_SetVarBranch_('SET_VAR_DEGREE_MIN'). +is_SetVarBranch_('SET_VAR_DEGREE_MAX'). +is_SetVarBranch_('SET_VAR_AFC_MIN'(_)). +is_SetVarBranch_('SET_VAR_AFC_MAX'(_)). +is_SetVarBranch_('SET_VAR_ACTIVITY_MIN'(_)). +is_SetVarBranch_('SET_VAR_ACTIVITY_MAX'(_)). +is_SetVarBranch_('SET_VAR_MIN_MIN'). +is_SetVarBranch_('SET_VAR_MIN_MAX'). +is_SetVarBranch_('SET_VAR_MAX_MIN'). +is_SetVarBranch_('SET_VAR_MAX_MAX'). +is_SetVarBranch_('SET_VAR_SIZE_MIN'). +is_SetVarBranch_('SET_VAR_SIZE_MAX'). +is_SetVarBranch_('SET_VAR_DEGREE_SIZE_MIN'). +is_SetVarBranch_('SET_VAR_DEGREE_SIZE_MAX'). +is_SetVarBranch_('SET_VAR_AFC_SIZE_MIN'(_)). +is_SetVarBranch_('SET_VAR_AFC_SIZE_MAX'(_)). +is_SetVarBranch_('SET_VAR_ACTIVITY_SIZE_MIN'(_)). +is_SetVarBranch_('SET_VAR_ACTIVITY_SIZE_MAX'(_)). + +is_SetVarBranch_(X, X) :- + is_SetVarBranch_(X). + +is_SetVarBranch(X,Y) :- nonvar(X), is_SetVarBranch_(X,Y). +is_SetVarBranch(X) :- is_SetVarBranch(X,_). + +is_FloatVarBranch_('FLOAT_VAR_NONE'). +is_FloatVarBranch_('FLOAT_VAR_RND'(_)). +is_FloatVarBranch_('FLOAT_VAR_MERIT_MIN'(_)). +is_FloatVarBranch_('FLOAT_VAR_MERIT_MAX'(_)). +is_FloatVarBranch_('FLOAT_VAR_DEGREE_MIN'). +is_FloatVarBranch_('FLOAT_VAR_DEGREE_MAX'). +is_FloatVarBranch_('FLOAT_VAR_AFC_MIN'(_)). +is_FloatVarBranch_('FLOAT_VAR_AFC_MAX'(_)). +is_FloatVarBranch_('FLOAT_VAR_ACTIVITY_MIN'(_)). +is_FloatVarBranch_('FLOAT_VAR_ACTIVITY_MAX'(_)). +is_FloatVarBranch_('FLOAT_VAR_MIN_MIN'). +is_FloatVarBranch_('FLOAT_VAR_MIN_MAX'). +is_FloatVarBranch_('FLOAT_VAR_MAX_MIN'). +is_FloatVarBranch_('FLOAT_VAR_MAX_MAX'). +is_FloatVarBranch_('FLOAT_VAR_SIZE_MIN'). +is_FloatVarBranch_('FLOAT_VAR_SIZE_MAX'). +is_FloatVarBranch_('FLOAT_VAR_DEGREE_SIZE_MIN'). +is_FloatVarBranch_('FLOAT_VAR_DEGREE_SIZE_MAX'). +is_FloatVarBranch_('FLOAT_VAR_AFC_SIZE_MIN'(_)). +is_FloatVarBranch_('FLOAT_VAR_AFC_SIZE_MAX'(_)). +is_FloatVarBranch_('FLOAT_VAR_ACTIVITY_SIZE_MIN'(_)). +is_FloatVarBranch_('FLOAT_VAR_ACTIVITY_SIZE_MAX'(_)). + +is_FloatVarBranch_(X, X) :- + is_FloatVarBranch_(X). + +is_FloatVarBranch(X,Y) :- nonvar(X), is_FloatVarBranch_(X,Y). +is_FloatVarBranch(X) :- is_FloatVarBranch(X,_). + +is_IntValBranch_('INT_VAL_RND'(_)). +is_IntValBranch_('INT_VAL'(_,_)). +is_IntValBranch_('INT_VAL_MIN'). +is_IntValBranch_('INT_VAL_MED'). +is_IntValBranch_('INT_VAL_MAX'). +is_IntValBranch_('INT_VAL_SPLIT_MIN'). +is_IntValBranch_('INT_VAL_SPLIT_MAX'). +is_IntValBranch_('INT_VAL_RANGE_MIN'). +is_IntValBranch_('INT_VAL_RANGE_MAX'). +is_IntValBranch_('INT_VALUES_MIN'). +is_IntValBranch_('INT_NEAR_MIN'(_)). +is_IntValBranch_('INT_NEAR_MAX'(_)). +is_IntValBranch_('INT_NEAR_INC'(_)). +is_IntValBranch_('INT_NEAR_DEC'(_)). + +is_IntValBranch_(X,X) :- is_IntValBranch_(X). + +is_IntValBranch(X,Y) :- nonvar(X), is_IntValBranch_(X,Y). +is_IntValBranch(X) :- is_IntValBranch(X,_). + +is_SetValBranch_('SET_VAL_RND_INC'(_)). +is_SetValBranch_('SET_VAL_RND_EXC'(_)). +is_SetValBranch_('SET_VAL'(_,_)). +is_SetValBranch_('SET_VAL_MIN_INC'). +is_SetValBranch_('SET_VAL_MIN_EXC'). +is_SetValBranch_('SET_VAL_MED_INC'). +is_SetValBranch_('SET_VAL_MED_EXC'). +is_SetValBranch_('SET_VAL_MAX_INC'). +is_SetValBranch_('SET_VAL_MAX_EXC'). + +is_SetValBranch_(X,X) :- is_SetValBranch_(X). + +is_SetValBranch(X,Y) :- nonvar(X), is_SetValBranch_(X,Y). +is_SetValBranch(X) :- is_SetValBranch(X,_). + +is_FloatValBranch_('FLOAT_VAL'(_,_)). +is_FloatValBranch_('FLOAT_VAL_SPLIT_RND'(_)). +is_FloatValBranch_('FLOAT_VAL_SPLIT_MIN'). +is_FloatValBranch_('FLOAT_VAL_SLIT_MAX'). + +is_FloatValBranch_(X,X) :- is_FloatValBranch_(X). + +is_FloatValBranch(X,Y) :- nonvar(X), is_FloatValBranch_(X,Y). +is_FloatValBranch(X) :- is_FloatValBranch(X,_). + + +new_space(Space) :- + assert_var(Space), + gecode_new_space(Space_), + Space='Space'(Space_). + +%% checking that an argument is a space sets a global variable +%% indicating whether variables need to be translated to their +%% original index or to their "keep" index. +%% +%% these bindings are going to take advantage of the fact that, +%% when a space is involved, it is checked first, thus setting +%% this global variable. subsequent accesses to variables are +%% then correctly translated. + +is_Space_('Space'(X),X) :- + gecode_space_use_keep_index(X,B), + nb_setval(gecode_space_use_keep_index,B). +is_Space(X,Y) :- nonvar(X), is_Space_(X,Y). +is_Space(X) :- is_Space(X,_). + +is_Reify_('Reify'(X),X). +is_Reify(X,Y) :- nonvar(X), is_Reify_(X,Y). +is_Reify(X) :- is_Reify(X,_). + +%% AUTOGENERATE ALL VARIANTS LATER! + +new_intvars([], _Space, _Lo, _Hi). +new_intvars([IVar|IVars], Space, Lo, Hi) :- + new_intvar(IVar, Space, Lo, Hi), + new_intvars(IVars, Space, Lo, Hi). + +new_intvars([], _Space, _IntSet). +new_intvars([IVar|IVars], Space, IntSet) :- + new_intvar(IVar, Space, IntSet), + new_intvars(IVars, Space, IntSet). + +new_boolvars([], _Space). +new_boolvars([BVar|BVars], Space) :- + new_boolvar(BVar, Space), + new_boolvars(BVars, Space). + +new_setvars([], _Space, _X1, _X2, _X3, _X4, _X5, _X6). +new_setvars([SVar|SVars], Space, X1, X2, X3, X4, X5, X6) :- + new_setvar(SVar, Space, X1, X2, X3, X4, X5, X6), + new_setvars(SVars, Space, X1, X2, X3, X4, X5, X6). + +new_setvars([], _Space, _X1, _X2, _X3, _X4, _X5). +new_setvars([SVar|SVars], Space, X1, X2, X3, X4, X5) :- + new_setvar(SVar, Space, X1, X2, X3, X4, X5), + new_setvars(SVars, Space, X1, X2, X3, X4, X5). + +new_setvars([], _Space, _X1, _X2, _X3, _X4). +new_setvars([SVar|SVars], Space, X1, X2, X3, X4) :- + new_setvar(SVar, Space, X1, X2, X3, X4), + new_setvars(SVars, Space, X1, X2, X3, X4). + +new_setvars([], _Space, _X1, _X2, _X3). +new_setvars([SVar|SVars], Space, X1, X2, X3) :- + new_setvar(SVar, Space, X1, X2, X3), + new_setvars(SVars, Space, X1, X2, X3). + +new_setvars([], _Space, _X1, _X2). +new_setvars([SVar|SVars], Space, X1, X2) :- + new_setvar(SVar, Space, X1, X2), + new_setvars(SVars, Space, X1, X2). + +%% AUTOGENERATE LATER + +assert_integer(X) :- assert_is_int(X). + +new_intvar(IVar, Space, Lo, Hi) :- !, + assert_var(IVar), + assert_is_Space_or_Clause(Space,Space_), + assert_integer(Lo), + assert_integer(Hi), + gecode_new_intvar_from_bounds(Idx,Space_,Lo,Hi), + IVar='IntVar'(Idx,-1). +new_intvar(IVar, Space, IntSet) :- !, + assert_var(IVar), + assert_is_Space_or_Clause(Space,Space_), + assert_is_IntSet(IntSet, L), + gecode_new_intvar_from_intset(Idx,Space_,L), + IVar='IntVar'(Idx,-1). + +new_floatvar(FVar, Space, Lo, Hi) :- !, + assert_var(FVar), + assert_is_Space_or_Clause(Space,Space_), + assert_float(Lo), + assert_float(Hi), + gecode_new_floatvar_from_bounds(Idx,Space_,Lo,Hi), + FVar='FloatVar'(Idx,-1). + +new_boolvar(BVar, Space) :- !, + assert_var(BVar), + assert_is_Space_or_Clause(Space,Space_), + gecode_new_boolvar(Idx,Space_), + BVar='BoolVar'(Idx,-1). + +%% (GlbMin,GlbMax,LubMin,LubMax,CardMin,CardMax) 6 new_setvar_1 +%% (GlbMin,GlbMax,LubMin,LubMax,CardMin) 5 new_setvar_2 +%% (GlbMin,GlbMax,LubMin,LubMax) 4 new_setvar_3 +%% (Glb,LubMin,LubMax,CardMin,CardMax) 5 new_setvar_4 +%% (Glb,LubMin,LubMax,CardMin) 4 new_setvar_5 +%% (Glb,LubMin,LubMax) 3 new_setvar_6 +%% (GlbMin,GlbMax,Lub,CardMin,CardMax) 5 new_setvar_7 +%% (GlbMin,GlbMax,Lub,CardMin) 4 new_setvar_8 +%% (GlbMin,GlbMax,Lub) 3 new_setvar_9 +%% (Glb,Lub,CardMin,CardMax) 4 new_setvar_10 +%% (Glb,Lub,CardMin) 3 new_setvar_11 +%% (Glb,Lub) 2 new_setvar_12 + +%% 6 arguments +%% (GlbMin,GlbMax,LubMin,LubMax,CardMin,CardMax) 6 new_setvar_1 +new_setvar(SVar, Space, GlbMin, GlbMax, LubMin, LubMax, CardMin, CardMax) :- + assert_var(SVar), + assert_is_Space_or_Clause(Space,Space_), + assert_integer(GlbMin), + assert_integer(GlbMax), + assert_integer(LubMin), + assert_integer(LubMax), + assert_integer(CardMin), + assert_integer(CardMax), + gecode_new_setvar(Idx, Space_, GlbMin, GlbMax, LubMin, LubMax, CardMin, CardMax), + SVar='SetVar'(Idx,-1). + +%% 5 arguments +%% (GlbMin,GlbMax,LubMin,LubMax,CardMin) 5 new_setvar_2 +%% (Glb,LubMin,LubMax,CardMin,CardMax) 5 new_setvar_4 +%% (GlbMin,GlbMax,Lub,CardMin,CardMax) 5 new_setvar_7 +new_setvar(SVar, Space, X1, X2, X3, X4, X5) :- + assert_var(SVar), + assert_is_Space_or_Clause(Space,Space_), + (integer(X1) + -> + assert_integer(X2), + assert_integer(X4), + assert_integer(X5), + (is_IntSet(X3,X3_) + -> gecode_new_setvar_7(Idx,Space_,X1,X2,X3_,X4,X5) + ; gecode_new_setvar_2(Idx,Space_,X1,X2,X3,X4,X5)) + ; + assert_is_IntSet(X1,X1_), + assert_integer(X2), + assert_integer(X3), + assert_integer(X4), + assert_integer(X5), + gecode_new_setvar_4(Idx,Space_,X1_,X2,X3,X4,X5)), + SVar='SetVar'(Idx,-1). + +%% 4 arguments +%% (GlbMin,GlbMax,LubMin,LubMax) 4 new_setvar_3 +%% (Glb,LubMin,LubMax,CardMin) 4 new_setvar_5 +%% (GlbMin,GlbMax,Lub,CardMin) 4 new_setvar_8 +%% (Glb,Lub,CardMin,CardMax) 4 new_setvar_10 +new_setvar(SVar,Space,X1,X2,X3,X4) :- + assert_var(SVar), + assert_is_Space_or_Clause(Space,Space_), + assert_integer(X4), + (is_IntSet(X1,X1_) + -> (is_IntSet(X2,X2_) + -> + assert_integer(X3), + gecode_new_setvar_10(Idx,Space_,X1_,X2_,X3,X4) + ; + assert_integer(X2), + assert_integer(X3), + gecode_new_setvar_5(Idx,Space_,X1_,X2,X3,X4)) + ; + assert_integer(X1), + assert_integer(X2), + (is_IntSet(X3,X3_) + -> + gecode_new_setvar_8(Idx,Space_,X1,X2,X3_,X4) + ; + assert_integer(X3), + gecode_new_setvar_3(Idx,Space_,X1,X2,X3,X4))), + SVar='SetVar'(Idx,-1). + +%% 3 arguments +%% (Glb,LubMin,LubMax) 3 new_setvar_6 +%% (GlbMin,GlbMax,Lub) 3 new_setvar_9 +%% (Glb,Lub,CardMin) 3 new_setvar_11 +new_setvar(SVar,Space,X1,X2,X3) :- + assert_var(SVar), + assert_is_Space_or_Clause(Space,Space_), + (is_IntSet(X1,X1_) + -> (is_IntSet(X2,X2_) + -> + assert_integer(X3), + gecode_new_setvar_11(Idx,Space_,X1_,X2_,X3) + ; + assert_integer(X2), + assert_integer(X3), + gecode_new_setvar_6(Idx,Space_,X1_,X2,X3)) + ; + assert_integer(X1), + assert_integer(X2), + assert_is_IntSet(X3,X3_), + gecode_new_setvar_9(Idx,Space_,X1,X2,X3_)), + SVar='SetVar'(Idx,-1). + +%% 2 arguments +%% (Glb,Lub) 2 new_setvar_12 +new_setvar(SVar,Space,X1,X2) :- + assert_var(SVar), + assert_is_Space_or_Clause(Space,Space_), + assert_is_IntSet(X1,X1_), + assert_is_IntSet(X2,X2_), + gecode_new_setvar_12(Idx,Space_,X1_,X2_), + SVar='SetVar'(Idx,-1). + +new_tupleset( TupleSet, List ) :- + gecode_new_tupleset(List, TupleSet_), + TupleSet = 'TupleSet'(TupleSet_). + +new_dfa( DFA, S0, List, Finals ) :- + gecode_new_dfa(DFA_, S0, List, Finals), + DFA = 'DFA'(DFA_). + + +minimize(Space,IVar) :- + assert_is_Space(Space,Space_), + assert_is_IntVar(IVar,IVar_), + gecode_space_minimize(Space_,IVar_). +maximize(Space,IVar) :- + assert_is_Space(Space,Space_), + assert_is_IntVar(IVar,IVar_), + gecode_space_maximize(Space_,IVar_). +minimize(Space,IVar1,IVar2) :- + assert_is_Space(Space,Space_), + assert_is_IntVar(IVar1,IVar1_), + assert_is_IntVar(IVar2,IVar2_), + gecode_space_minimize_ratio(Space_,IVar1_,IVar2_). +maximize(Space,IVar1,IVar2) :- + assert_is_Space(Space,Space_), + assert_is_IntVar(IVar1,IVar1_), + assert_is_IntVar(IVar2,IVar2_), + gecode_space_maximize_ratio(Space_,IVar1_,IVar2_). + +reify(Space,BVar,Mode,R) :- + assert_is_Space(Space,Space_), + assert_is_BoolVar(BVar,BVar_), + assert_is_ReifyMode(Mode,Mode_), + assert_var(R), + gecode_new_reify(Space_,BVar_,Mode_,R_), + R = 'Reify'(R_). + +gecode_search_options_init(search_options(0,1.0,8,2,'RM_NONE',0,1,0)). +gecode_search_options_offset(restart,1). +gecode_search_options_offset(threads,2). +gecode_search_options_offset(c_d ,3). +gecode_search_options_offset(a_d ,4). +gecode_search_options_offset(cutoff, 5). +gecode_search_options_offset(nogoods_limit, 6). +gecode_search_options_offset(clone, 7). +gecode_search_options_offset(stop, 8). % unimplemented + +gecode_search_option_set(O,V,R) :- + gecode_search_options_offset(O,I), + setarg(I,R,V). + +gecode_search_options_from_alist(L,R) :- + gecode_search_options_init(R), + gecode_search_options_process_alist(L,R). + +gecode_search_options_process_alist([], _R). +gecode_search_options_process_alist([H|T], R) :- !, + gecode_search_options_process1(H, R), + gecode_search_options_process_alist(T, R). + +gecode_search_options_process1(restart,R) :- !, + gecode_search_option_set(restart,1,R). +gecode_search_options_process1(threads=N,R) :- !, + (integer(N) -> V is float(N) + ; (float(N) -> V=N + ; throw(bad_search_option_value(threads=N)))), + gecode_search_option_set(threads,V,R). +gecode_search_options_process1(c_d=N,R) :- !, + (integer(N) -> V=N + ; throw(bad_search_option_value(c_d=N))), + gecode_search_option_set(c_d,V,R). +gecode_search_options_process1(a_d=N,R) :- !, + (integer(N) -> V=N + ; throw(bad_search_option_value(a_d=N))), + gecode_search_option_set(a_d,V,R). +gecode_search_options_process1(cutoff=C,R) :- !, + (is_RestartMode(C,C_) -> V=C_ + ; throw(bad_search_option_value(cutoff=C))), + gecode_search_option_set(cutoff,V,R). +gecode_search_options_process1(nogoods_limit=N,R) :- !, + (integer(N), N >= 0 -> V=N + ; throw(bad_search_option_value(nogoods_limit=N))), + gecode_search_option_set(nogoods_limit,V,R). +gecode_search_options_process1(clone=N,R) :- !, + ((N == 0 ; N == 1)-> V=N + ; throw(bad_search_option_value(clone=N))), + gecode_search_option_set(clone,V,R). +gecode_search_options_process1(O,_) :- + throw(gecode_error(unrecognized_search_option(O))). + +search(Space, Solution) :- + search(Space, Solution, []). + +search(Space, Solution, Alist) :- + assert_is_Space(Space,Space_), + assert_var(Solution), + gecode_search_options_from_alist(Alist,O), + gecode_new_engine(Space_,Engine_,O), + gecode_engine_search(Engine_,Solution_), + Solution='Space'(Solution_). + + +%% INSPECTING VARIABLES + +get_for_vars([],_Space,[],_F). +get_for_vars([V|Vs],Space,[V2|V2s],F) :- + call_with_args(F,V,Space,V2), + get_for_vars(Vs,Space,V2s,F). + +get_assigned(Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_assigned(Space_,Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_assigned(Space_,Var_) + ; is_FloatVar(Var,Var_) + -> gecode_floatvar_assigned(Space_,Var_) + ; is_SetVar(Var,Var_) + -> gecode_setvar_assigned(Space_,Var_) + ; throw(gecode_error(expected(variable)))). + +get_min(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_min(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_min(X, Space_, Var_) + ; is_FloatVar(Var,Var_) + -> gecode_floatvar_min(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_min)). + +get_max(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_max(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_max(X, Space_, Var_) + ; is_FloatVar(Var,Var_) + -> gecode_floatvar_max(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_max)). + +get_med(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_med(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_med(X, Space_, Var_) + ; is_FloatVar(Var,Var_) + -> gecode_floatvar_med(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_med)). + +get_val(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_val(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_val(X, Space_, Var_) + ; is_FloatVar(Var,Var_) + -> gecode_floatvar_val(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_val)). + +get_size(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_size(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_size(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_size)). + +get_width(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_width(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_width(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_width)). + +get_regret_min(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_regret_min(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_regret_min(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_regret_min)). + +get_regret_max(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_regret_max(X, Space_, Var_) + ; is_BoolVar(Var,Var_) + -> gecode_boolvar_regret_max(X, Space_, Var_) + ; get_for_vars(X, Space, Var, gecode:get_regret_max)). + +get_glbSize(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_glbSize(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_glbSize)). + +get_lubSize(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_lubSize(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_lubSize)). + +get_unknownSize(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_unknownSize(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_unknownSize)). + +get_cardMin(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_cardMin(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_cardMin)). + +get_cardMax(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_cardMax(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_cardMax)). + +get_lubMin(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_lubMin(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_lubMin)). + +get_lubMax(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_lubMax(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_lubMax)). + +get_glbMin(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_glbMin(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_glbMin)). + +get_glbMax(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_glbMax(X,Space_,Var_) + ; get_for_vars(X, Space, Var, gecode:get_glbMax)). + +get_glb_ranges(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_glb_ranges(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_glb_ranges)). + +get_lub_ranges(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_lub_ranges(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_lub_ranges)). + +get_unknown_ranges(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_unknown_ranges(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_unknown_ranges)). + +get_glb_values(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_glb_values(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_glb_values)). + +get_lub_values(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_lub_values(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_lub_values)). + +get_unknown_values(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_SetVar(Var,Var_) + -> gecode_setvar_unknown_values(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_unknown_values)). + +get_ranges(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_ranges(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_ranges)). + +get_values(X, Space, Var) :- + assert_is_Space(Space,Space_), + (is_IntVar(Var,Var_) + -> gecode_intvar_values(X,Space_,Var_) + ; get_for_vars(X,Space,Var,gecode:get_values)). + +new_disjunctor(X, Space) :- + assert_is_Space(Space,Space_), + gecode_new_disjunctor(D,Space_), + X='Disjunctor'(D). + +is_Disjunctor_('Disjunctor'(D),D). +is_Disjunctor(X,Y) :- nonvar(X), is_Disjunctor_(X,Y). +is_Disjunctor(X) :- is_Disjunctor(X,_). + +assert_is_Disjunctor(X,Y) :- + is_Disjunctor(X,Y) -> true ; throw(gecode_error(expected(disjunctor))). + +new_clause(X, Disj) :- + assert_is_Disjunctor(Disj,Disj_), + gecode_new_clause(C, Disj_), + X='Clause'(C). + +is_Clause_('Clause'(C),C) :- + gecode_space_use_keep_index(C,B), + nb_setval(gecode_space_use_keep_index,B). +is_Clause(X,Y) :- nonvar(X), is_Clause_(X,Y). +is_Clause(X) :- is_Clause(X,_). + +assert_is_Clause(X,Y) :- + is_Clause(X,Y) -> true ; throw(gecode_error(expected(clause))). + +is_Space_or_Clause(X,Y) :- + (is_Space(X,Y);is_Clause(X,Y)), !. +assert_is_Space_or_Clause(X,Y) :- + is_Space_or_Clause(X,Y) -> true + ; throw(gecode_error(expected(space,clause))). + +new_forward(Clause, X, Y) :- + assert_is_Clause(Clause, Clause_), + (is_IntVar(X,X_) + -> (is_IntVar(Y,Y_) + -> gecode_clause_intvar_forward(Clause_,X_,Y_) + ; throw(gecode_error(forward))) + ; (is_BoolVar(X,X_) + -> (is_BoolVar(Y,Y_) + -> gecode_clause_boolvar_forward(Clause_,X_,Y_) + ; throw(gecode_error(forward))) + ; (is_SetVar(X,X_) + -> (is_SetVar(Y,Y_) + -> gecode_clause_setvar_forward(Clause_,X_,Y_) + ; throw(gecode_error(forward))) + ; (X=[] + -> Y=[] + ;(X=[H1|T1],Y=[H2|T2]) + -> (new_forward(Clause,H1,H2), + new_forward(Clause,T1,T2)) + ; throw(gecode_error(forward)))))). + +new_intvars_(L,Space,N,I,J) :- length(L,N), new_intvars(L,Space,I,J). +new_intvars_(L,Space,N,IntSet) :- length(L,N), new_intvars(L,Space,IntSet). +new_boolvars_(L,Space,N) :- length(L,N), new_boolvars(L,Space). +new_setvars_(L,Space,N,X1,X2,X3,X4,X5,X6) :- length(L,N), new_setvars(L,Space,X1,X2,X3,X4,X5,X6). +new_setvars_(L,Space,N,X1,X2,X3,X4,X5) :- length(L,N), new_setvars(L,Space,X1,X2,X3,X4,X5). +new_setvars_(L,Space,N,X1,X2,X3,X4) :- length(L,N), new_setvars(L,Space,X1,X2,X3,X4). +new_setvars_(L,Space,N,X1,X2,X3) :- length(L,N), new_setvars(L,Space,X1,X2,X3). +new_setvars_(L,Space,N,X1,X2) :- length(L,N), new_setvars(L,Space,X1,X2). + +keep_(Space, Var) :- + (Var = 'IntVar'(I,J) + -> (J = -1 -> (gecode_intvar_keep(Space,I,K),setarg(2,Var,K)) + ; throw(gecode_error(variable_already_kept(Var)))) + ; (Var = 'BoolVar'(I,J) + -> (J = -1 -> (gecode_boolvar_keep(Space,I,K),setarg(2,Var,K)) + ; throw(gecode_error(variable_already_kept(Var)))) + ; (Var = 'SetVar'(I,J) + -> (J = -1 -> (gecode_setvar_keep(Space,I,K),setarg(2,Var,K)) + ; throw(gecode_error(variable_already_kept(Var)))) + ; keep_list_(Space,Var)))). + +keep_list_(_Space, []) :- !. +keep_list_(Space, [H|T]) :- !, + keep_(Space,H), keep_list_(Space,T). +keep_list_(_, X) :- + throw(gecode_error(not_a_variable(X))). + +%% more concise interface: +(X := Y) :- var(Y), !, throw(gecode_error((X := Y))). +(X := intset(I,J)) :- !, new_intset(X,I,J). +(X := intset(L)) :- !, new_intset(X,L). +(X := space) :- !, new_space(X). +(X := intvar(Space,I,J)) :- !, new_intvar(X,Space,I,J). +(X := intvar(Space,IntSet)) :- !, new_intvar(X,Space,IntSet). +(X := boolvar(Space)) :- !, new_boolvar(X,Space). +(X := setvar(Space,X1,X2,X3,X4,X5,X6)) :- !, new_setvar(X,Space,X1,X2,X3,X4,X5,X6). +(X := setvar(Space,X1,X2,X3,X4,X5)) :- !, new_setvar(X,Space,X1,X2,X3,X4,X5). +(X := setvar(Space,X1,X2,X3,X4)) :- !, new_setvar(X,Space,X1,X2,X3,X4). +(X := setvar(Space,X1,X2,X3)) :- !, new_setvar(X,Space,X1,X2,X3). +(X := setvar(Space,X1,X2)) :- !, new_setvar(X,Space,X1,X2). +(X := intvars(Space,N,I,J)) :- !, new_intvars_(X,Space,N,I,J). +(X := intvars(Space,N,IntSet)) :- !, new_intvars_(X,Space,N,IntSet). +(X := boolvars(Space,N)) :- !, new_boolvars_(X,Space,N). +(X := setvars(Space,N,X1,X2,X3,X4,X5,X6)) :- !, new_setvars_(X,Space,N,X1,X2,X3,X4,X5,X6). +(X := setvars(Space,N,X1,X2,X3,X4,X5)) :- !, new_setvars_(X,Space,N,X1,X2,X3,X4,X5). +(X := setvars(Space,N,X1,X2,X3,X4)) :- !, new_setvars_(X,Space,N,X1,X2,X3,X4). +(X := setvars(Space,N,X1,X2,X3)) :- !, new_setvars_(X,Space,N,X1,X2,X3). +(X := setvars(Space,N,X1,X2)) :- !, new_setvars_(X,Space,N,X1,X2). +(X := tupleset(Set)) :- !, new_tupleset(X, Set). +(X := dfa(S0, Transitions, Finals)) :- !, new_dfa(X, S0, Transitions, Finals). + +(X := min(Space,Var)) :- !, get_min(X,Space,Var). +(X := max(Space,Var)) :- !, get_max(X,Space,Var). +(X := med(Space,Var)) :- !, get_med(X,Space,Var). +(X := val(Space,Var)) :- !, get_val(X,Space,Var). +(X := size(Space,Var)) :- !, get_size(X,Space,Var). +(X := width(Space,Var)) :- !, get_width(X,Space,Var). +(X := regret_min(Space,Var)) :- !, get_regret_min(X,Space,Var). +(X := regret_max(Space,Var)) :- !, get_regret_max(X,Space,Var). +(X := ranges(Space,Var)) :- !, get_ranges(X,Space,Var). +(X := values(Space,Var)) :- !, get_values(X,Space,Var). + +(X := glbSize(Space,Var)) :- !, get_glbSize(X,Space,Var). +(X := lubSize(Space,Var)) :- !, get_lubSize(X,Space,Var). +(X := unknownSize(Space,Var)) :- !, get_unknownSize(X,Space,Var). +(X := cardMin(Space,Var)) :- !, get_cardMin(X,Space,Var). +(X := cardMax(Space,Var)) :- !, get_cardMax(X,Space,Var). +(X := lubMin(Space,Var)) :- !, get_lubMin(X,Space,Var). +(X := lubMax(Space,Var)) :- !, get_lubMax(X,Space,Var). +(X := glbMin(Space,Var)) :- !, get_glbMin(X,Space,Var). +(X := glbMax(Space,Var)) :- !, get_glbMax(X,Space,Var). +(X := glb_ranges(Space,Var)) :- !, get_glb_ranges(X,Space,Var). +(X := lub_ranges(Space,Var)) :- !, get_lub_ranges(X,Space,Var). +(X := unknown_ranges(Space,Var)) :- !, get_unknown_ranges(X,Space,Var). +(X := glb_values(Space,Var)) :- !, get_glb_values(X,Space,Var). +(X := lub_values(Space,Var)) :- !, get_lub_values(X,Space,Var). +(X := unknown_values(Space,Var)) :- !, get_unknown_values(X,Space,Var). + +(X := disjunctor(Space)) :- !, new_disjunctor(X,Space). +(X := clause(Disj)) :- !, new_clause(X,Disj). + +(X := search(Y)) :- !, search(Y,X). +(X := search(Y,L)) :- !, search(Y,X,L). + +% these should be autogenerated: +(C += forward(X,Y)) :- !, new_forward(C,X,Y). +(Space += abs(X1,X2)) :- !, abs(Space,X1,X2). +(Space += abs(X1,X2,X3)) :- !, abs(Space,X1,X2,X3). +(Space += assign(X1,X2)) :- !, assign(Space,X1,X2). +(Space += atmostOne(X1,X2)) :- !, atmostOne(Space,X1,X2). +(Space += binpacking(X1,X2,X3)) :- !, binpacking(Space,X1,X2,X3). +(Space += binpacking(X1,X2,X3,X4)) :- !, binpacking(Space,X1,X2,X3,X4). +(Space += branch(X1,X2)) :- !, branch(Space,X1,X2). +(Space += branch(X1,X2,X3)) :- !, branch(Space,X1,X2,X3). +(Space += cardinality(X1,X2)) :- !, cardinality(Space,X1,X2). +(Space += cardinality(X1,X2,X3)) :- !, cardinality(Space,X1,X2,X3). +(Space += channel(X1,X2)) :- !, channel(Space,X1,X2). +(Space += channel(X1,X2,X3)) :- !, channel(Space,X1,X2,X3). +(Space += channel(X1,X2,X3,X4)) :- !, channel(Space,X1,X2,X3,X4). +(Space += channel(X1,X2,X3,X4,X5)) :- !, channel(Space,X1,X2,X3,X4,X5). +(Space += channelSorted(X1,X2)) :- !, channelSorted(Space,X1,X2). +(Space += circuit(X1)) :- !, circuit(Space,X1). +(Space += circuit(X1,X2)) :- !, circuit(Space,X1,X2). +(Space += circuit(X1,X2,X3)) :- !, circuit(Space,X1,X2,X3). +(Space += circuit(X1,X2,X3,X4)) :- !, circuit(Space,X1,X2,X3,X4). +(Space += circuit(X1,X2,X3,X4,X5)) :- !, circuit(Space,X1,X2,X3,X4,X5). +(Space += circuit(X1,X2,X3,X4,X5,X6)) :- !, circuit(Space,X1,X2,X3,X4,X5,X6). +(Space += clause(X1,X2,X3,X4)) :- !, clause(Space,X1,X2,X3,X4). +(Space += clause(X1,X2,X3,X4,X5)) :- !, clause(Space,X1,X2,X3,X4,X5). +(Space += convex(X1)) :- !, convex(Space,X1). +(Space += convex(X1,X2)) :- !, convex(Space,X1,X2). +(Space += count(X1,X2)) :- !, count(Space,X1,X2). +(Space += count(X1,X2,X3)) :- !, count(Space,X1,X2,X3). +(Space += count(X1,X2,X3,X4)) :- !, count(Space,X1,X2,X3,X4). +(Space += count(X1,X2,X3,X4,X5)) :- !, count(Space,X1,X2,X3,X4,X5). +(Space += cumulative(X1,X2,X3,X4)) :- !, cumulative(Space,X1,X2,X3,X4). +(Space += cumulative(X1,X2,X3,X4,X5)) :- !, cumulative(Space,X1,X2,X3,X4,X5). +(Space += cumulative(X1,X2,X3,X4,X5,X6)) :- !, cumulative(Space,X1,X2,X3,X4,X5,X6). +(Space += cumulative(X1,X2,X3,X4,X5,X6,X7)) :- !, cumulative(Space,X1,X2,X3,X4,X5,X6,X7). +(Space += cumulatives(X1,X2,X3,X4,X5,X6,X7)) :- !, cumulatives(Space,X1,X2,X3,X4,X5,X6,X7). +(Space += cumulatives(X1,X2,X3,X4,X5,X6,X7,X8)) :- !, cumulatives(Space,X1,X2,X3,X4,X5,X6,X7,X8). +(Space += distinct(X1)) :- !, distinct(Space,X1). +(Space += distinct(X1,X2)) :- !, distinct(Space,X1,X2). +(Space += distinct(X1,X2,X3)) :- !, distinct(Space,X1,X2,X3). +(Space += div(X1,X2,X3)) :- !, div(Space,X1,X2,X3). +(Space += div(X1,X2,X3,X4)) :- !, div(Space,X1,X2,X3,X4). +(Space += divmod(X1,X2,X3,X4)) :- !, divmod(Space,X1,X2,X3,X4). +(Space += divmod(X1,X2,X3,X4,X5)) :- !, divmod(Space,X1,X2,X3,X4,X5). +(Space += dom(X1,X2)) :- !, dom(Space,X1,X2). +(Space += dom(X1,X2,X3)) :- !, dom(Space,X1,X2,X3). +(Space += dom(X1,X2,X3,X4)) :- !, dom(Space,X1,X2,X3,X4). +(Space += dom(X1,X2,X3,X4,X5)) :- !, dom(Space,X1,X2,X3,X4,X5). +(Space += element(X1,X2,X3)) :- !, element(Space,X1,X2,X3). +(Space += element(X1,X2,X3,X4)) :- !, element(Space,X1,X2,X3,X4). +(Space += element(X1,X2,X3,X4,X5)) :- !, element(Space,X1,X2,X3,X4,X5). +(Space += element(X1,X2,X3,X4,X5,X6)) :- !, element(Space,X1,X2,X3,X4,X5,X6). +(Space += element(X1,X2,X3,X4,X5,X6,X7)) :- !, element(Space,X1,X2,X3,X4,X5,X6,X7). +(Space += extensional(X1,X2)) :- !, extensional(Space,X1,X2). +(Space += extensional(X1,X2,X3)) :- !, extensional(Space,X1,X2,X3). +(Space += linear(X1,X2,X3)) :- !, linear(Space,X1,X2,X3). +(Space += linear(X1,X2,X3,X4)) :- !, linear(Space,X1,X2,X3,X4). +(Space += linear(X1,X2,X3,X4,X5)) :- !, linear(Space,X1,X2,X3,X4,X5). +(Space += linear(X1,X2,X3,X4,X5,X6)) :- !, linear(Space,X1,X2,X3,X4,X5,X6). +(Space += max(X1,X2)) :- !, max(Space,X1,X2). +(Space += max(X1,X2,X3)) :- !, max(Space,X1,X2,X3). +(Space += max(X1,X2,X3,X4)) :- !, max(Space,X1,X2,X3,X4). +(Space += min(X1,X2)) :- !, min(Space,X1,X2). +(Space += min(X1,X2,X3)) :- !, min(Space,X1,X2,X3). +(Space += min(X1,X2,X3,X4)) :- !, min(Space,X1,X2,X3,X4). +(Space += mod(X1,X2,X3)) :- !, mod(Space,X1,X2,X3). +(Space += mod(X1,X2,X3,X4)) :- !, mod(Space,X1,X2,X3,X4). +(Space += mult(X1,X2,X3)) :- !, mult(Space,X1,X2,X3). +(Space += mult(X1,X2,X3,X4)) :- !, mult(Space,X1,X2,X3,X4). +(Space += nooverlap(X1,X2,X3,X4)) :- !, nooverlap(Space,X1,X2,X3,X4). +(Space += nooverlap(X1,X2,X3,X4,X5)) :- !, nooverlap(Space,X1,X2,X3,X4,X5). +(Space += nooverlap(X1,X2,X3,X4,X5,X6)) :- !, nooverlap(Space,X1,X2,X3,X4,X5,X6). +(Space += nooverlap(X1,X2,X3,X4,X5,X6,X7)) :- !, nooverlap(Space,X1,X2,X3,X4,X5,X6,X7). +(Space += nooverlap(X1,X2,X3,X4,X5,X6,X7,X8)) :- !, nooverlap(Space,X1,X2,X3,X4,X5,X6,X7,X8). +(Space += notMax(X1,X2)) :- !, notMax(Space,X1,X2). +(Space += notMin(X1,X2)) :- !, notMin(Space,X1,X2). +(Space += path(X1,X2,X3)) :- !, path(Space,X1,X2,X3). +(Space += path(X1,X2,X3,X4)) :- !, path(Space,X1,X2,X3,X4). +(Space += path(X1,X2,X3,X4,X5)) :- !, path(Space,X1,X2,X3,X4,X5). +(Space += path(X1,X2,X3,X4,X5,X6)) :- !, path(Space,X1,X2,X3,X4,X5,X6). +(Space += path(X1,X2,X3,X4,X5,X6,X7)) :- !, path(Space,X1,X2,X3,X4,X5,X6,X7). +(Space += path(X1,X2,X3,X4,X5,X6,X7,X8)) :- !, path(Space,X1,X2,X3,X4,X5,X6,X7,X8). +(Space += precede(X1,X2)) :- !, precede(Space,X1,X2). +(Space += precede(X1,X2,X3)) :- !, precede(Space,X1,X2,X3). +(Space += precede(X1,X2,X3,X4)) :- !, precede(Space,X1,X2,X3,X4). +(Space += reify(X1,X2,X3)) :- !, reify(Space,X1,X2,X3). +(Space += rel(X1,X2)) :- !, rel(Space,X1,X2). +(Space += rel(X1,X2,X3)) :- !, rel(Space,X1,X2,X3). +(Space += rel(X1,X2,X3,X4)) :- !, rel(Space,X1,X2,X3,X4). +(Space += rel(X1,X2,X3,X4,X5)) :- !, rel(Space,X1,X2,X3,X4,X5). +(Space += rel(X1,X2,X3,X4,X5,X6)) :- !, rel(Space,X1,X2,X3,X4,X5,X6). +(Space += sequence(X1)) :- !, sequence(Space,X1). +(Space += sequence(X1,X2)) :- !, sequence(Space,X1,X2). +(Space += sequence(X1,X2,X3,X4,X5)) :- !, sequence(Space,X1,X2,X3,X4,X5). +(Space += sequence(X1,X2,X3,X4,X5,X6)) :- !, sequence(Space,X1,X2,X3,X4,X5,X6). +(Space += sorted(X1,X2)) :- !, sorted(Space,X1,X2). +(Space += sorted(X1,X2,X3)) :- !, sorted(Space,X1,X2,X3). +(Space += sorted(X1,X2,X3,X4)) :- !, sorted(Space,X1,X2,X3,X4). +(Space += sqr(X0,X1,X2,X3)) :- !, sqr(Space,X0,X1,X2,X3). +(Space += sqr(X1,X2)) :- !, sqr(Space,X1,X2). +(Space += sqrt(X1,X2)) :- !, sqrt(Space,X1,X2). +(Space += sqrt(X1,X2,X3)) :- !, sqrt(Space,X1,X2,X3). +(Space += unary(X1,X2)) :- !, unary(Space,X1,X2). +(Space += unary(X1,X2,X3)) :- !, unary(Space,X1,X2,X3). +(Space += unary(X1,X2,X3,X4)) :- !, unary(Space,X1,X2,X3,X4). +(Space += unary(X1,X2,X3,X4,X5)) :- !, unary(Space,X1,X2,X3,X4,X5). +(Space += unshare(X1)) :- !, unshare(Space,X1). +(Space += unshare(X1,X2)) :- !, unshare(Space,X1,X2). +(Space += weights(X1,X2,X3,X4)) :- !; weights(Space,X1,X2,X3,X4). + +(Space += minimize(X)) :- !, minimize(Space,X). +(Space += maximize(X)) :- !, maximize(Space,X). +(Space += minimize(X,Y)) :- !, minimize(Space,X,Y). +(Space += maximize(X,Y)) :- !, maximize(Space,X,Y). + +(Space += keep(X)) :- !, keep_(Space,X). From 56f47acc49feac5f4a357d88b3f5faa9c70f0f1a Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 11:42:54 +0000 Subject: [PATCH 06/99] malloc --- packages/real/real.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/real/real.c b/packages/real/real.c index fd38bfce0..2ddb7f37f 100644 --- a/packages/real/real.c +++ b/packages/real/real.c @@ -1,4 +1,3 @@ - #define CSTACK_DEFNS #include "rconfig.h" #if HAVE_R_H || !defined(_YAP_NOT_INSTALLED_) @@ -480,7 +479,7 @@ static int term_to_S_el(term_t t, int objtype, size_t index, SEXP ans) { switch (objtype) { case PL_R_CHARS: case PL_R_PLUS: { - char *s; + char *s = NULL; if (PL_get_chars(t, &s, CVT_ATOM | CVT_STRING | CVT_LIST | BUF_DISCARDABLE | REP_UTF8)) { @@ -782,7 +781,7 @@ static SEXP list_to_sexp(term_t t, int objtype) { static int slot_to_sexp(term_t t, SEXP *ansP) { term_t tslot = PL_new_term_ref(); - char *s; + char *s = NULL; SEXP tmp_R, name_R; int nprotect = 0; @@ -814,7 +813,7 @@ static int slot_to_sexp(term_t t, SEXP *ansP) { static int set_slot_to_sexp(term_t t, SEXP sexp) { term_t tslot = PL_new_term_ref(); - char *s; + char *s = NULL; SEXP tmp_R, name_R; int nprotect = 0; @@ -845,7 +844,7 @@ static int set_slot_to_sexp(term_t t, SEXP sexp) { static int listEl_to_sexp(term_t t, SEXP *ansP) { term_t tslot = PL_new_term_ref(); - char *s; + char *s = NULL; SEXP tmp_R; int nprotect = 0; @@ -876,7 +875,7 @@ static SEXP pl_to_func(term_t t, bool eval) { term_t a1 = PL_new_term_ref(), a; int i, ierror; SEXP c_R, call_R, res_R; - char *sf; + char *sf = NULL; int nprotect = 0; if (!PL_get_name_arity(t, &name, &arity)) { @@ -2028,7 +2027,7 @@ static foreign_t send_c_vector(term_t tvec, term_t tout) { } static foreign_t rexpr_to_pl_term(term_t in, term_t out) { - char *s; + char *s = NULL; if (PL_get_chars(in, &s, CVT_ALL | BUF_MALLOC | REP_UTF8)) { SEXP sexp; @@ -2050,7 +2049,7 @@ static foreign_t rexpr_to_pl_term(term_t in, term_t out) { } static foreign_t robj_to_pl_term(term_t name, term_t out) { - char *plname; + char *plname = NULL; int nprotect = 0; if (PL_get_chars(name, &plname, CVT_ALL | BUF_DISCARDABLE | REP_UTF8)) { @@ -2141,7 +2140,7 @@ static foreign_t execute_R(term_t rvar, term_t value) { static foreign_t is_R_variable(term_t t) { SEXP name, o; - char *s; + char *s = NULL; int nprotect = 0; /* is this variable defined in R?. */ From 9194fda6cca4c6516ca8fc374ad80fb0afe95fcb Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 11:43:14 +0000 Subject: [PATCH 07/99] better_jupyter --- packages/python/py4yap.h | 2 +- packages/python/pyio.c | 10 +- packages/python/pypreds.c | 704 +++++++++++++++++- packages/python/python.c | 3 +- packages/python/python.pl | 11 +- packages/python/swig/prolog/yapi.yap | 5 +- .../yap_ipython/core/interactiveshell.py | 1 - .../yap_kernel/yap_ipython/prolog/jupyter.yap | 6 +- .../python/yap_kernel/yap_ipython/yapi.py | 67 +- 9 files changed, 752 insertions(+), 57 deletions(-) diff --git a/packages/python/py4yap.h b/packages/python/py4yap.h index 0c799427e..cb925e731 100644 --- a/packages/python/py4yap.h +++ b/packages/python/py4yap.h @@ -63,7 +63,7 @@ extern bool init_python_vfs(void); ATOM_comma, ATOM_builtin, ATOM_V, ATOM_A, ATOM_self, ATOM_nil, ATOM_brackets, ATOM_curly_brackets; -extern functor_t FUNCTOR_dollar1, FUNCTOR_abs1, FUNCTOR_all1, FUNCTOR_any1, +extern functor_t FUNCTOR_dollar1, FUNCTOR_abs1, FUNCTOR_all1, FUNCTOR_any1, FUNCTOR_as2, FUNCTOR_bin1, FUNCTOR_brackets1, FUNCTOR_comma2, FUNCTOR_dir1, FUNCTOR_float1, FUNCTOR_int1, FUNCTOR_iter1, FUNCTOR_iter2, FUNCTOR_long1, FUNCTOR_len1, FUNCTOR_curly1, FUNCTOR_ord1, FUNCTOR_range1, FUNCTOR_range2, diff --git a/packages/python/pyio.c b/packages/python/pyio.c index ff2881228..ceac10525 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -14,13 +14,13 @@ static int py_put(int sno, int ch) // PyObject *pyw_data; StreamDesc *st = YAP_GetStreamFromId(sno); if (st->user_name == TermOutStream) { - PyGILState_STATE tg = python_acquire_GIL(); + term_t tg = python_acquire_GIL(); PySys_WriteStdout("%C", ch); python_release_GIL(tg); return ch; } if (st->user_name == TermErrStream) { - PyGILState_STATE tg = python_acquire_GIL(); + term_t tg = python_acquire_GIL(); PySys_WriteStderr("%C", ch); python_release_GIL(tg); return ch; @@ -29,7 +29,7 @@ static int py_put(int sno, int ch) PyObject *err; s[0] = ch; s[1] = '\0'; - PyGILState_STATE g0 = python_acquire_GIL(); + term_t g0 = python_acquire_GIL(); PyObject_CallMethodObjArgs(st->u.private_data, PyUnicode_FromString("write"), PyUnicode_FromString(s), NULL); python_release_GIL(g0); @@ -88,10 +88,12 @@ static bool py_close(int sno) { static bool getLine(int inp) { char *myrl_line = NULL; StreamDesc *rl_instream = YAP_RepStreamFromId(inp); - PyObject*prompt = PyUnicode_FromString( "?- "), + term_t ctk = python_acquire_GIL(); + PyObject*prompt = PyUnicode_FromString( "?- "), *msg = PyUnicode_FromString(""); /* window of vulnerability opened */ myrl_line = PyUnicode_AsUTF8(PyObject_CallFunctionObjArgs(rl_instream->u.private_data,msg,prompt,NULL)); + python_release_GIL(ctk); rl_instream->u.irl.ptr = rl_instream->u.irl.buf = (const unsigned char*)myrl_line; myrl_line = NULL; return true; diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index c29c2effe..d03e1ac34 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -1 +1,703 @@ - #include "py4yap.h" PyObject *py_Main; void pyErrorHandler__(int line, const char *file, const char *code) { // this code is called if a Python error is found. fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); PyErr_Print(); } static foreign_t python_len(term_t tobj, term_t tf) { Py_ssize_t len; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } len = PyObject_Length(o); pyErrorAndReturn(PL_unify_int64(tf, len)); } static foreign_t python_dir(term_t tobj, term_t tf) { PyObject *dir; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } dir = PyObject_Dir(o); { foreign_t rc = address_to_term(dir, tf); ; pyErrorAndReturn(rc); } } static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { PyObject *i; PyObject *o; PyObject *f; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } if (!PySequence_Check(o)) { pyErrorAndReturn(false); } i = term_to_python(tindex, true, NULL, true); if (i == NULL) { pyErrorAndReturn(false); } #if PY_MAJOR_VERSION < 3 f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); #else f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); #endif { foreign_t rc = address_to_term(f, val); ; pyErrorAndReturn(rc); } } static foreign_t python_is(term_t tobj, term_t tf) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); if (!o) { python_release_GIL(lim); pyErrorAndReturn(false); } foreign_t rc = python_to_term(o, tf); if (rc) PyErr_Clear(); python_release_GIL(lim); pyErrorAndReturn(rc); } static foreign_t python_proc(term_t tobj) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); python_release_GIL(lim); bool rc = o != NULL; pyErrorAndReturn(rc); } static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { PyObject *pF, *pI; PyObject *p; // get Scope ... pI = term_to_python(indx, true, NULL, true); // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!pI || !p) { { pyErrorAndReturn(false); } } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_DecRef(pI); Py_DecRef(p); Py_INCREF(pF); { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, term_t tf) { PyObject *pF; PyObject *pArgs, *pKeywords; PyObject *pValue; int i, arity; atom_t aname; foreign_t out; term_t targ = PL_new_term_ref(); pF = term_to_python(tin, true, NULL, true); PyErr_Clear(); if (pF == NULL) { { pyErrorAndReturn(false); } } if (PL_is_atom(targs)) { pArgs = NULL; } else { if (!PL_get_name_arity(targs, &aname, &arity)) { { pyErrorAndReturn(false); } } if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { /* ignore (_) */ pArgs = NULL; } else { pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); if (!pArgs) { pyErrorAndReturn(false); } for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, targs, targ)) { pyErrorAndReturn(false); } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } } } if (PL_is_atom(keywds)) { pKeywords = NULL; } else { pKeywords = term_to_python(keywds, true, NULL, true); } if (PyCallable_Check(pF)) { pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); if (!pValue) PyErr_Print(); else Py_IncRef(pValue); } else if (pArgs == NULL) { pValue = pF; if (pF) { Py_IncRef(pValue); } } else { PyErr_Print(); { pyErrorAndReturn(false); } } if (pArgs) Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { pyErrorAndReturn(false); } out = address_to_term(pValue, tf); pyErrorAndReturn(out); } static foreign_t assign_python(term_t exp, term_t name) { term_t stackp = python_acquire_GIL(); PyObject *e = term_to_python(exp, true, NULL, true); if (e == NULL) { python_release_GIL(stackp); pyErrorAndReturn(false); } bool b = python_assign(name, e, NULL); python_release_GIL(stackp); pyErrorAndReturn(b); } static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { PyErr_Clear(); PyObject *pI, *pArgs, *pOut; PyObject *env; atom_t name; char *s; int i, arity; term_t targ = PL_new_term_ref(); if ((env = py_Builtin) == NULL) { // no point in even trying { pyErrorAndReturn(false); } } if (PL_get_name_arity(caller, &name, &arity)) { if (!(s = PL_atom_chars(name))) { pyErrorAndReturn(false); } if ((pI = PyObject_GetAttrString(env, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pI); } else { // Prolog should make sure this never happens. { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, caller, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArg = Py_None; } else { pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } } /* pArg reference stolen here: */ if (PyTuple_SetItem(pArgs, i, pArg)) { PyErr_Print(); { pyErrorAndReturn(false); } } } pOut = PyObject_CallObject(pI, pArgs); Py_DECREF(pArgs); Py_DECREF(pI); if (pOut == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } { foreign_t rc = address_to_term(pOut, out); ; pyErrorAndReturn(rc); } } static foreign_t python_access(term_t obj, term_t f, term_t out) { PyErr_Clear(); PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; atom_t name; char *s = NULL; int i, arity; term_t targ = PL_new_term_ref(); if (o == NULL) { pyErrorAndReturn(false); } if (PL_is_atom(f)) { if (!PL_get_atom_chars(f, &s)) { pyErrorAndReturn(false); } if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pValue); { pyErrorAndReturn(python_to_term(pValue, out) ); } } if (!PL_get_name_arity(f, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (!s) { pyErrorAndReturn(false); } if ((pF = PyObject_GetAttrString(o, s)) == NULL) { DebugPrintf("Function %p\n", o); PyErr_Print(); { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, f, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArgs = Py_None; } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } pValue = PyObject_CallObject(pF, pArgs); Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { { pyErrorAndReturn(false); } } { pyErrorAndReturn(python_to_term(pValue, out)); } } static foreign_t python_field(term_t parent, term_t att, term_t tobj) { PyObject *pF; atom_t name; char *s; int arity; if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } else { PyObject *p; // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (arity == 1 && !strcmp(s, "()")) { if (!PL_get_arg(1, att, att)) { pyErrorAndReturn(false); } if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); } if (!s || !p) { { pyErrorAndReturn(false); } } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { PyErr_Clear(); { pyErrorAndReturn(false); } } } { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_main_module(term_t mod) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Main, mod); pyErrorAndReturn(rc); } } static foreign_t python_function(term_t tobj) { PyErr_Clear(); PyObject *obj = term_to_python(tobj, true, NULL, true); foreign_t rc = PyFunction_Check(obj); pyErrorAndReturn(rc); } foreign_t python_builtin(term_t out) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Builtin, out); pyErrorAndReturn(rc); } } static foreign_t python_run_file(term_t file) { char *s; size_t len; char si[256]; s = si; PyErr_Clear(); if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 PyObject *PyFileObject = PyFile_FromString(si, "r"); PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); #else FILE *f = fopen(s, "r"); if (f == NULL) { pyErrorAndReturn(false); } PyRun_SimpleFileEx(f, s, 1); #endif { { pyErrorAndReturn(true); } } } { pyErrorAndReturn(false); } } extern PyThreadState *YAP_save; static foreign_t python_run_command(term_t cmd) { char *s; bool rc = false; size_t len; char si[256]; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { PyRun_SimpleString(s); rc = true; } pyErrorAndReturn(rc); } static foreign_t python_run_script(term_t cmd, term_t fun) { char si[256], sf[256]; size_t len = 255, len1 = 255; PyObject *pName, *pModule, *pFunc; PyObject *pArgs = NULL, *pValue; char *s; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && (s = sf) != NULL && PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 pName = PyString_FromString("rbm"); #else // asssumes UTF-8 pName = PyUnicode_FromString("rbm"); #endif /* Error checking of pName left out */ pModule = PyImport_Import(pName); PyErr_Clear(); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, sf); /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { pValue = PyObject_CallObject(pFunc, pArgs); if (pValue != NULL) { Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr, "Call failed\n"); { pyErrorAndReturn(false); } } } else { pyErrorHandler(); if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", sf); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); { pyErrorAndReturn(false); } } { pyErrorAndReturn(true); } } { pyErrorAndReturn(false); } } static foreign_t python_export(term_t t, term_t pl) { foreign_t rc = false; PyErr_Clear(); if (PL_is_functor(t, FUNCTOR_pointer1)) { void *ptr; term_t targ = PL_new_term_ref(); if (!PL_get_arg(1, t, targ)) { pyErrorAndReturn(false); } if (!PL_get_pointer(targ, &ptr)) { pyErrorAndReturn(false); } Py_INCREF((PyObject *)ptr); /* pyErrorAndReturn( __main__) */ rc = python_to_term((PyObject *)ptr, pl); } pyErrorAndReturn(rc); } /** * @pred python_import(MName, Mod) * Import a python module to the YAP environment. * * @param mname module name, either an atom or a sequence of atoms, * eg os.sys * @param mod the pointer to the Python object * @return success? */ static int python_import(term_t mname, term_t mod) { PyObject *pName; term_t arg = PL_new_term_ref(); char s0[MAXPATHLEN], *s = s0; while (true) { size_t len; //PyErr_Clear(); len = (MAXPATHLEN - 1) - (s - s0); if (PL_is_pair(mname)) { char *sa = NULL; if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || !PL_get_arg(2, mname, mname)) { pyErrorAndReturn(false); } PL_get_atom_chars(arg, &sa); strcpy(s, sa); s += strlen(s); *s++ = '.'; s[0] = '\0'; } else if (!PL_get_nchars(mname, &len, &s, CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { pyErrorAndReturn(false); } else { break; } } term_t t0 = python_acquire_GIL(); #if PY_MAJOR_VERSION < 3 pName = PyString_FromString(s0); #else pName = PyUnicode_FromString(s0); #endif if (pName == NULL) { python_release_GIL(t0); pyErrorAndReturn(false); } PyObject *pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule == NULL) { #if EXTRA_MESSSAGES if (PyErr_Occurred()) PyErr_Print(); PyErr_Clear(); #endif python_release_GIL(t0); pyErrorAndReturn(false); } { foreign_t rc = address_to_term(pModule, mod); python_release_GIL(t0); pyErrorAndReturn(rc); } } static foreign_t python_to_rhs(term_t inp, term_t t) { PyObject *pVal; PyErr_Clear(); pVal = term_to_python(inp, true, NULL, true); if (pVal == NULL) pyErrorAndReturn(false); pyErrorAndReturn(address_to_term(pVal, t)); } // static PyThreadState *_saveP = NULL; static bool _threaded = true; /* static YAP_Int p_python_ensure(term_t ptr) { PyGILState_STATE _tState = PyGILState_Ensure(); pyErrorAndReturn( PL_unify_int64(ptr), false); } static YAP_Int p_python_release(term_t ptr) { PyGILState_STATE _tState; PL_get_int64( ptr, &_tState); PyGILState_Release( _tState ); pyErrorAndReturn( true); } */ int _locked = 0; PyThreadState *tstate; static YAP_Int p_python_threaded(void) { PyErr_Clear(); // PyEval_ReleaseThread(tstate); // _threaded = true; // _locked = 0; pyErrorAndReturn(true); } static PyGILState_STATE gstates[64]; static int gstatei = 0; term_t python_acquire_GIL(void) { term_t curSlot = PL_new_term_ref(); // extern int Yap_do_low_level_trace; // Yap_do_low_level_trace = 1; // fprintf( stderr, "++%d\n", ++_locked); // if (_locked > 0) { _locked++ ; } // else if (_threaded) { gstates[gstatei] = PyGILState_Ensure(); } fprintf(stderr, "+%d\n", (int)gstatei); PL_put_integer(curSlot, gstatei++); return curSlot; } bool python_release_GIL(term_t curBlock) { int gstateix; gstatei--; PL_get_integer(curBlock, &gstateix); PL_reset_term_refs(curBlock); if (gstatei != gstateix) { if (gstateix > gstatei) { fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); return false; } else { fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); return false; } } if (_threaded) { PyGILState_Release(gstates[gstatei]); } pyErrorAndReturn(true); } install_t install_pypreds(void) { PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); PL_register_foreign("python_builtin", 1, python_builtin, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); PL_register_foreign("python_len", 2, python_len, 0); PL_register_foreign("python_is", 2, python_is, 0); PL_register_foreign("python_dir", 2, python_dir, 0); PL_register_foreign("python_apply", 4, python_apply, 0); PL_register_foreign("python_index", 3, python_index, 0); PL_register_foreign("python_field", 3, python_field, 0); PL_register_foreign("python_assign", 2, assign_python, 0); PL_register_foreign("python_export", 2, python_export, 0); PL_register_foreign("python_function", 1, python_function, 0); PL_register_foreign("python_slice", 4, python_slice, 0); PL_register_foreign("python_run_file", 1, python_run_file, 0); PL_register_foreign("python_proc", 1, python_proc, 0); PL_register_foreign("python_run_command", 1, python_run_command, 0); PL_register_foreign("python_run_script", 2, python_run_script, 0); PL_register_foreign("python_main_module", 1, python_main_module, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_access", 3, python_access, 0); PL_register_foreign("python_threaded", 0, p_python_threaded, 0); init_python_vfs(); } \ No newline at end of file + +#include "py4yap.h" + +PyObject *py_Main; + +void pyErrorHandler__(int line, const char *file, const char *code) { + // this code is called if a Python error is found. + fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); + PyErr_Print(); +} +static foreign_t python_len(term_t tobj, term_t tf) { + Py_ssize_t len; + PyObject *o; + + o = term_to_python(tobj, true, NULL, true); + if (o == NULL) { + pyErrorAndReturn(false); + } + len = PyObject_Length(o); + pyErrorAndReturn(PL_unify_int64(tf, len)); +} + +static foreign_t python_dir(term_t tobj, term_t tf) { + PyObject *dir; + PyObject *o; + + o = term_to_python(tobj, true, NULL, true); + if (o == NULL) { + pyErrorAndReturn(false); + } + dir = PyObject_Dir(o); + { + foreign_t rc = address_to_term(dir, tf); + ; + pyErrorAndReturn(rc); + } +} + +static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { + PyObject *i; + PyObject *o; + PyObject *f; + + o = term_to_python(tobj, true, NULL, true); + if (o == NULL) { + pyErrorAndReturn(false); + } + if (!PySequence_Check(o)) { + pyErrorAndReturn(false); + } + i = term_to_python(tindex, true, NULL, true); + if (i == NULL) { + pyErrorAndReturn(false); + } +#if PY_MAJOR_VERSION < 3 + f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); +#else + f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); +#endif + { + foreign_t rc = address_to_term(f, val); + ; + pyErrorAndReturn(rc); + } +} + +static foreign_t python_is(term_t tobj, term_t tf) { + PyObject *o; + + term_t lim = python_acquire_GIL(); + + o = term_to_python(tobj, true, NULL, true); + if (!o) { + python_release_GIL(lim); + pyErrorAndReturn(false); + } + foreign_t rc = python_to_term(o, tf); + if (rc) + PyErr_Clear(); + python_release_GIL(lim); + pyErrorAndReturn(rc); +} + +static foreign_t python_proc(term_t tobj) { + PyObject *o; + + term_t lim = python_acquire_GIL(); + + o = term_to_python(tobj, true, NULL, true); + python_release_GIL(lim); + bool rc = o != NULL; + pyErrorAndReturn(rc); +} + +static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { + PyObject *pF, *pI; + + PyObject *p; + + // get Scope ... + pI = term_to_python(indx, true, NULL, true); + // got Scope.Exp + // get Scope ... + p = term_to_python(parent, true, NULL, true); + // Exp + if (!pI || !p) { + { pyErrorAndReturn(false); } + } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + Py_DecRef(pI); + Py_DecRef(p); + Py_INCREF(pF); + { + foreign_t rc; + rc = address_to_term(pF, tobj); + pyErrorAndReturn(rc); + } +} + +static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, + term_t tf) { + PyObject *pF; + PyObject *pArgs, *pKeywords; + PyObject *pValue; + int i, arity; + atom_t aname; + foreign_t out; + term_t targ = PL_new_term_ref(); + + pF = term_to_python(tin, true, NULL, true); + PyErr_Clear(); + if (pF == NULL) { + { pyErrorAndReturn(false); } + } + if (PL_is_atom(targs)) { + pArgs = NULL; + } else { + + if (!PL_get_name_arity(targs, &aname, &arity)) { + { pyErrorAndReturn(false); } + } + if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { + /* ignore (_) */ + pArgs = NULL; + } else { + + pArgs = PyTuple_New(arity); + DebugPrintf("Tuple %p\n", pArgs); + + if (!pArgs) { + pyErrorAndReturn(false); + } + for (i = 0; i < arity; i++) { + PyObject *pArg; + if (!PL_get_arg(i + 1, targs, targ)) { + pyErrorAndReturn(false); + } + pArg = term_to_python(targ, true, NULL, true); + if (pArg == NULL) { + pyErrorAndReturn(false); + } + /* pArg reference stolen here: */ + PyTuple_SetItem(pArgs, i, pArg); + } + } + } + if (PL_is_atom(keywds)) { + pKeywords = NULL; + } else { + pKeywords = term_to_python(keywds, true, NULL, true); + } + if (PyCallable_Check(pF)) { + pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); + // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); + // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); + // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); + if (!pValue) + PyErr_Print(); + else + Py_IncRef(pValue); + } else if (pArgs == NULL) { + pValue = pF; + + if (pF) { + Py_IncRef(pValue); + } + } else { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + if (pArgs) + Py_DECREF(pArgs); + Py_DECREF(pF); + if (pValue == NULL) { + pyErrorAndReturn(false); + } + out = address_to_term(pValue, tf); + pyErrorAndReturn(out); +} + +static foreign_t assign_python(term_t exp, term_t name) { + term_t stackp = python_acquire_GIL(); + PyObject *e = term_to_python(exp, true, NULL, true); + + if (e == NULL) { + python_release_GIL(stackp); + pyErrorAndReturn(false); + } + bool b = python_assign(name, e, NULL); + python_release_GIL(stackp); + pyErrorAndReturn(b); +} + +static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { + PyErr_Clear(); + PyObject *pI, *pArgs, *pOut; + PyObject *env; + atom_t name; + char *s; + int i, arity; + term_t targ = PL_new_term_ref(); + + if ((env = py_Builtin) == NULL) { + // no point in even trying + { pyErrorAndReturn(false); } + } + if (PL_get_name_arity(caller, &name, &arity)) { + if (!(s = PL_atom_chars(name))) { + pyErrorAndReturn(false); + } + if ((pI = PyObject_GetAttrString(env, s)) == NULL) { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + Py_INCREF(pI); + } else { + // Prolog should make sure this never happens. + { pyErrorAndReturn(false); } + } + pArgs = PyTuple_New(arity); + DebugPrintf("Tuple %p\n", pArgs); + for (i = 0; i < arity; i++) { + PyObject *pArg; + if (!PL_get_arg(i + 1, caller, targ)) { + pyErrorAndReturn(false); + } + /* ignore (_) */ + if (i == 0 && PL_is_variable(targ)) { + pArg = Py_None; + } else { + pArg = term_to_python(targ, true, NULL, true); + if (pArg == NULL) { + pyErrorAndReturn(false); + } + } + /* pArg reference stolen here: */ + if (PyTuple_SetItem(pArgs, i, pArg)) { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + } + pOut = PyObject_CallObject(pI, pArgs); + Py_DECREF(pArgs); + Py_DECREF(pI); + if (pOut == NULL) { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + { + foreign_t rc = address_to_term(pOut, out); + ; + pyErrorAndReturn(rc); + } +} + +static foreign_t python_access(term_t obj, term_t f, term_t out) { + PyErr_Clear(); + PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; + atom_t name; + char *s = NULL; + int i, arity; + term_t targ = PL_new_term_ref(); + + if (o == NULL) { + pyErrorAndReturn(false); + } + if (PL_is_atom(f)) { + if (!PL_get_atom_chars(f, &s)) { + pyErrorAndReturn(false); + } + if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + Py_INCREF(pValue); + { pyErrorAndReturn(python_to_term(pValue, out) ); } + } + if (!PL_get_name_arity(f, &name, &arity)) { + { pyErrorAndReturn(false); } + } + s = PL_atom_chars(name); + if (!s) { + pyErrorAndReturn(false); + } + if ((pF = PyObject_GetAttrString(o, s)) == NULL) { + DebugPrintf("Function %p\n", o); + PyErr_Print(); + { pyErrorAndReturn(false); } + } + pArgs = PyTuple_New(arity); + DebugPrintf("Tuple %p\n", pArgs); + for (i = 0; i < arity; i++) { + PyObject *pArg; + if (!PL_get_arg(i + 1, f, targ)) { + pyErrorAndReturn(false); + } + /* ignore (_) */ + if (i == 0 && PL_is_variable(targ)) { + pArgs = Py_None; + } + pArg = term_to_python(targ, true, NULL, true); + if (pArg == NULL) { + pyErrorAndReturn(false); + } + /* pArg reference stolen here: */ + PyTuple_SetItem(pArgs, i, pArg); + } + pValue = PyObject_CallObject(pF, pArgs); + Py_DECREF(pArgs); + Py_DECREF(pF); + if (pValue == NULL) { + { pyErrorAndReturn(false); } + } + { pyErrorAndReturn(python_to_term(pValue, out)); } +} + +static foreign_t python_field(term_t parent, term_t att, term_t tobj) { + PyObject *pF; + atom_t name; + char *s; + int arity; + + if (!PL_get_name_arity(att, &name, &arity)) { + { pyErrorAndReturn(false); } + } else { + PyObject *p; + + // got Scope.Exp + // get Scope ... + p = term_to_python(parent, true, NULL, true); + // Exp + if (!PL_get_name_arity(att, &name, &arity)) { + { pyErrorAndReturn(false); } + } + s = PL_atom_chars(name); + if (arity == 1 && !strcmp(s, "()")) { + if (!PL_get_arg(1, att, att)) { + pyErrorAndReturn(false); + } + if (!PL_get_name_arity(att, &name, &arity)) { + { pyErrorAndReturn(false); } + } + s = PL_atom_chars(name); + } + if (!s || !p) { + { pyErrorAndReturn(false); } + } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { + PyErr_Clear(); + { pyErrorAndReturn(false); } + } + } + { + foreign_t rc; + rc = address_to_term(pF, tobj); + pyErrorAndReturn(rc); + } +} + +static foreign_t python_main_module(term_t mod) { + { + foreign_t rc; + PyErr_Clear(); + rc = address_to_term(py_Main, mod); + pyErrorAndReturn(rc); + } +} + +static foreign_t python_function(term_t tobj) { + PyErr_Clear(); + PyObject *obj = term_to_python(tobj, true, NULL, true); + foreign_t rc = PyFunction_Check(obj); + + pyErrorAndReturn(rc); +} + +foreign_t python_builtin(term_t out) { + { + foreign_t rc; + PyErr_Clear(); + rc = address_to_term(py_Builtin, out); + pyErrorAndReturn(rc); + } +} + +static foreign_t python_run_file(term_t file) { + char *s; + size_t len; + char si[256]; + s = si; + PyErr_Clear(); + if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { +#if PY_MAJOR_VERSION < 3 + PyObject *PyFileObject = PyFile_FromString(si, "r"); + PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); +#else + FILE *f = fopen(s, "r"); + if (f == NULL) { + pyErrorAndReturn(false); + } + PyRun_SimpleFileEx(f, s, 1); +#endif + { + { pyErrorAndReturn(true); } + } + } + { pyErrorAndReturn(false); } +} + +extern PyThreadState *YAP_save; + +static foreign_t python_run_command(term_t cmd) { + char *s; + bool rc = false; + size_t len; + char si[256]; + + PyErr_Clear(); + s = si; + if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { + PyRun_SimpleString(s); + rc = true; + } + pyErrorAndReturn(rc); +} + +static foreign_t python_run_script(term_t cmd, term_t fun) { + char si[256], sf[256]; + size_t len = 255, len1 = 255; + PyObject *pName, *pModule, *pFunc; + PyObject *pArgs = NULL, *pValue; + char *s; + + PyErr_Clear(); + s = si; + if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && + (s = sf) != NULL && + PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { + +#if PY_MAJOR_VERSION < 3 + pName = PyString_FromString("rbm"); +#else + // asssumes UTF-8 + pName = PyUnicode_FromString("rbm"); +#endif + /* Error checking of pName left out */ + + pModule = PyImport_Import(pName); + PyErr_Clear(); + Py_DECREF(pName); + + if (pModule != NULL) { + pFunc = PyObject_GetAttrString(pModule, sf); + /* pFunc is a new reference */ + + if (pFunc && PyCallable_Check(pFunc)) { + pValue = PyObject_CallObject(pFunc, pArgs); + if (pValue != NULL) { + Py_DECREF(pValue); + } else { + Py_DECREF(pFunc); + Py_DECREF(pModule); + PyErr_Print(); + fprintf(stderr, "Call failed\n"); + { pyErrorAndReturn(false); } + } + } else { + pyErrorHandler(); + if (PyErr_Occurred()) + PyErr_Print(); + fprintf(stderr, "Cannot find function \"%s\"\n", sf); + } + Py_XDECREF(pFunc); + Py_DECREF(pModule); + } else { + PyErr_Print(); + { pyErrorAndReturn(false); } + } + { pyErrorAndReturn(true); } + } + { pyErrorAndReturn(false); } +} + +static foreign_t python_export(term_t t, term_t pl) { + foreign_t rc = false; + PyErr_Clear(); + if (PL_is_functor(t, FUNCTOR_pointer1)) { + void *ptr; + term_t targ = PL_new_term_ref(); + + if (!PL_get_arg(1, t, targ)) { + pyErrorAndReturn(false); + } + if (!PL_get_pointer(targ, &ptr)) { + pyErrorAndReturn(false); + } + Py_INCREF((PyObject *)ptr); + /* pyErrorAndReturn( __main__) */ + rc = python_to_term((PyObject *)ptr, pl); + } + pyErrorAndReturn(rc); +} + +/** + * @pred python_import(MName, Mod) + * Import a python module to the YAP environment. + * + * @param mname module name, either an atom or a sequence of atoms, + * eg os.sys + * @param mod the pointer to the Python object + * @return success? + */ +static int python_import(term_t mname, term_t mod) { + PyObject *pName; + bool do_as = false; + + term_t arg = PL_new_term_ref(); + char s0[MAXPATHLEN], *s = s0, *t; + functor_t f; + while (true) { + size_t len; + //PyErr_Clear(); + len = (MAXPATHLEN - 1) - (s - s0); + if (PL_is_pair(mname)) { + char *sa = NULL; + if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || + !PL_get_arg(2, mname, mname)) { + pyErrorAndReturn(false); + } + PL_get_atom_chars(arg, &sa); + strcpy(s, sa); + s += strlen(s); + *s++ = '.'; + s[0] = '\0'; + } else if (PL_get_functor(mname, &f) && f == FUNCTOR_as2 && PL_get_arg(2, mname,arg) && + PL_get_atom_chars(arg, &t)) { + do_as = true; + PL_get_arg(1, mname,mname); + } else if (!PL_get_nchars(mname, &len, &s, + CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { + pyErrorAndReturn(false); + } else { + break; + } + } + term_t t0 = python_acquire_GIL(); +#if PY_MAJOR_VERSION < 3 + pName = PyString_FromString(s0); +#else + pName = PyUnicode_FromString(s0); +#endif + if (pName == NULL) { + python_release_GIL(t0); + pyErrorAndReturn(false); + } + + PyObject *pModule = PyImport_Import(pName); + + Py_XDECREF(pName); + if (pModule == NULL) { + python_release_GIL(t0); + + pyErrorAndReturn(false); + } + { + foreign_t rc = address_to_term(pModule, mod); + + if (do_as && PyObject_SetAttrString(py_Main, t, pModule) <0) + return false; + python_release_GIL(t0); + pyErrorAndReturn(rc); + } +} + +static foreign_t python_to_rhs(term_t inp, term_t t) { + PyObject *pVal; + PyErr_Clear(); + pVal = term_to_python(inp, true, NULL, true); + if (pVal == NULL) + pyErrorAndReturn(false); + pyErrorAndReturn(address_to_term(pVal, t)); +} + +// static PyThreadState *_saveP = NULL; +static bool _threaded = true; + +/* +static YAP_Int + p_python_ensure(term_t ptr) + { + PyGILState_STATE _tState = PyGILState_Ensure(); + pyErrorAndReturn( PL_unify_int64(ptr), false); + } + +static YAP_Int + p_python_release(term_t ptr) + { + + PyGILState_STATE _tState; + PL_get_int64( ptr, &_tState); + PyGILState_Release( _tState ); + pyErrorAndReturn( true); + } +*/ + +int _locked = 0; +PyThreadState *tstate; + +static YAP_Int p_python_threaded(void) { + + PyErr_Clear(); + // PyEval_ReleaseThread(tstate); + // _threaded = true; + // _locked = 0; + pyErrorAndReturn(true); +} + +static PyGILState_STATE gstates[64]; +static int gstatei = 0; + +term_t python_acquire_GIL(void) { + term_t curSlot = PL_new_term_ref(); + // extern int Yap_do_low_level_trace; + // Yap_do_low_level_trace = 1; + // fprintf( stderr, "++%d\n", ++_locked); + // if (_locked > 0) { _locked++ ; } + // else + if (_threaded) { + gstates[gstatei] = PyGILState_Ensure(); + } + fprintf(stderr, "+%d\n", (int)gstatei); + PL_put_integer(curSlot, gstatei++); + return curSlot; +} + +bool python_release_GIL(term_t curBlock) { + int gstateix; + gstatei--; + PL_get_integer(curBlock, &gstateix); + PL_reset_term_refs(curBlock); + if (gstatei != gstateix) { + if (gstateix > gstatei) { + fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); + return false; + } else { + fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); + return false; + } + } + if (_threaded) { + PyGILState_Release(gstates[gstatei]); + } + pyErrorAndReturn(true); +} + + +install_t install_pypreds(void) { + PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); + PL_register_foreign("python_builtin", 1, python_builtin, 0); + PL_register_foreign("python_import", 2, python_import, 0); + PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); + PL_register_foreign("python_len", 2, python_len, 0); + PL_register_foreign("python_is", 2, python_is, 0); + PL_register_foreign("python_dir", 2, python_dir, 0); + PL_register_foreign("python_apply", 4, python_apply, 0); + PL_register_foreign("python_index", 3, python_index, 0); + PL_register_foreign("python_field", 3, python_field, 0); + PL_register_foreign("python_assign", 2, assign_python, 0); + PL_register_foreign("python_export", 2, python_export, 0); + PL_register_foreign("python_function", 1, python_function, 0); + PL_register_foreign("python_slice", 4, python_slice, 0); + PL_register_foreign("python_run_file", 1, python_run_file, 0); + PL_register_foreign("python_proc", 1, python_proc, 0); + PL_register_foreign("python_run_command", 1, python_run_command, 0); + PL_register_foreign("python_run_script", 2, python_run_script, 0); + PL_register_foreign("python_main_module", 1, python_main_module, 0); + PL_register_foreign("python_import", 2, python_import, 0); + PL_register_foreign("python_access", 3, python_access, 0); + PL_register_foreign("python_threaded", 0, p_python_threaded, 0); + + init_python_vfs(); +} diff --git a/packages/python/python.c b/packages/python/python.c index bcb1b53e6..f930a3d5b 100644 --- a/packages/python/python.c +++ b/packages/python/python.c @@ -9,7 +9,7 @@ atom_t ATOM_true, ATOM_false, ATOM_colon, ATOM_dot, ATOM_none, ATOM_t, ATOM_comma, ATOM_builtin, ATOM_A, ATOM_V, ATOM_self, ATOM_nil, ATOM_brackets, ATOM_curly_brackets; -functor_t FUNCTOR_dollar1, FUNCTOR_abs1, FUNCTOR_all1, FUNCTOR_any1, +functor_t FUNCTOR_dollar1, FUNCTOR_abs1, FUNCTOR_all1, FUNCTOR_any1, FUNCTOR_as2, FUNCTOR_bin1, FUNCTOR_brackets1, FUNCTOR_comma2, FUNCTOR_dir1, FUNCTOR_float1, FUNCTOR_int1, FUNCTOR_iter1, FUNCTOR_iter2, FUNCTOR_long1, FUNCTOR_len1, FUNCTOR_curly1, FUNCTOR_ord1, FUNCTOR_range1, FUNCTOR_range2, @@ -68,6 +68,7 @@ static void install_py_constants(void) { FUNCTOR_abs1 = PL_new_functor(PL_new_atom("abs"), 1); FUNCTOR_all1 = PL_new_functor(PL_new_atom("all"), 1); FUNCTOR_any1 = PL_new_functor(PL_new_atom("any"), 1); + FUNCTOR_as2 = PL_new_functor(PL_new_atom("as"), 2); FUNCTOR_bin1 = PL_new_functor(PL_new_atom("bin"), 1); FUNCTOR_ord1 = PL_new_functor(PL_new_atom("ord"), 1); FUNCTOR_int1 = PL_new_functor(PL_new_atom("int"), 1); diff --git a/packages/python/python.pl b/packages/python/python.pl index d0b2e6b06..791d39dbc 100644 --- a/packages/python/python.pl +++ b/packages/python/python.pl @@ -34,8 +34,8 @@ op(100,fy,$), op(950,fy,:=), op(950,yfx,:=), - op(950,fx,<-), - op(950,yfx,<-), +% op(950,fx,<-), +% op(950,yfx,<-), op(50, yf, []), op(50, yf, '()'), op(100, xfy, '.'), @@ -112,8 +112,9 @@ Data types are :- multifile user:(:=)/2, user:(:=)/1, - user:(<-)/1, - user:(<-)/2, user:'()'/1, user:'{}'/1, user:dot_qualified_goal/2, user:import_arg/1. + % user:(<-)/1, + % user:(<-)/2, + user:'()'/1, user:'{}'/1, user:dot_qualified_goal/2, user:import_arg/1. import( F ) :- catch( python:python_import(F), _, fail ). @@ -139,11 +140,13 @@ user:(:= F) :- catch( python:python_proc(F), _, fail ). user:( V := F ) :- python:python_assign(F, V). +/* user:(<- F) :- catch( python:python_proc(F), _, fail ). user:(V <- F) :- V := F. +*/ python:python_import(Module) :- python:python_import(Module, _). diff --git a/packages/python/swig/prolog/yapi.yap b/packages/python/swig/prolog/yapi.yap index d20f7a60a..39a2aea97 100644 --- a/packages/python/swig/prolog/yapi.yap +++ b/packages/python/swig/prolog/yapi.yap @@ -1,3 +1,4 @@ + %% @file yapi.yap %% @brief support yap shell %% @@ -21,7 +22,9 @@ :- reexport( library(python) ). :- python_import(yap4py.yapi). -:- python_import(gc). +%:- python_import(gc). + +:- meta_predicate( yapi_query(:,+) ). %:- start_low_level_trace. diff --git a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py index a3273a6b3..8cc8b22b6 100644 --- a/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py +++ b/packages/python/yap_kernel/yap_ipython/core/interactiveshell.py @@ -2661,7 +2661,6 @@ class InteractiveShell(SingletonConfigurable): result : :class:`ExecutionResult` """ - print("go") result = None try: # import trace diff --git a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap index bf26c388d..e48564a62 100644 --- a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap +++ b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap @@ -62,16 +62,18 @@ blankc('\t'). streams(false) :- +nb_setval(jupyter_cell, false), flush_output, forall( stream_property( S, mode(_) ), close(S) ). streams(true) :- -% open('/python/input', read, _Input, [alias(user_input),bom(false)]), + nb_setval(jupyter_cell, true), + open('/python/input', read, _Input, [alias(user_input),bom(false)]), open('/python/sys.stdout', append, _Output, [alias(user_output)]), open('/python/sys.stderr', append, _Error, [alias(user_error)]), -% set_prolog_flag(user_input,_Input), + set_prolog_flag(user_input,_Input), set_prolog_flag(user_output,_Output), set_prolog_flag(user_error,_Error). diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index 47ef152f4..4aca0e5f2 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -555,9 +555,6 @@ class YAPRun: self.bindings += [answer] self.iterations += 1 if stop and howmany == self.iterations: - self.query.close() - self.query = None - self.os = None return True, self.bindings if self.query.port == "exit": self.query.close() @@ -565,13 +562,13 @@ class YAPRun: self.os = None sys.stderr.writeln('Done, with', self.bindings) return True,self.bindings + if self.bindings: + sys.stderr.write('Done, with', self.bindings, '\n') + else: self.query.close() self.query = None self.os = None - if self.bindings: - sys.stderr.write('Done, with', self.bindings, '\n') - else: - sys.stderr.write('Fail\n') + sys.stderr.write('Fail\n') return True,{} except Exception as e: has_raised = True @@ -614,7 +611,7 @@ class YAPRun: # vs is the list of variables # you can print it out, the left-side is the variable name, # the right side wraps a handle to a variable - # pdb.set_trace() + #import pdb; pdb.set_trace() # #pdb.set_trace() # atom match either symbols, or if no symbol exists, strings, In this case # variable names should match strings @@ -655,19 +652,6 @@ class YAPRun: # except SyntaxError: # preprocessing_exc_tuple = self.shell.syntax_error() # sys.exc_info() cell = raw_cell # cell has to exist so it can be stored/logged - # else: - # if False and len(cell.splitlines()) == 1: - # # Dynamic transformations - only applied for single line commands - # with self.shell.builtin_trap: - # try: - # # use prefilter_lines to handle trailing newlines - # # restore trailing newline for ast.parse - # cell = self.shell.prefilter_manager.prefilter_lines(cell) + '\n' - # except Exception: - # # don't allow prefilter errors to crash IPython - # preprocessing_exc_tuple = sys.exc_info() - - for i in self.syntaxErrors(raw_cell): try: (what,lin,_,text) = i @@ -683,18 +667,17 @@ class YAPRun: if not silent: self.shell.logger.log(cell, raw_cell) # # Display the exception if input processing failed. - # if preprocessing_exc_tuple is not None: - # self.showtraceback(preprocessing_exc_tuple) - # if store_history: - # self.shell.execution_count += 1 - # return error_before_exec(preprocessing_exc_tuple[2]) + if preprocessing_exc_tuple is not None: + self.showtraceback(preprocessing_exc_tuple) + if store_history: + self.shell.execution_count += 1 + return error_before_exec(preprocessing_exc_tuple[2]) # Our own compiler remembers the __future__ environment. If we want to # run code with a separate __future__ environment, use the default # compiler # compiler = self.shell.compile if shell_futures else CachingCompiler() cell_name = str( self.shell.execution_count) - if cell[0] == '%': if cell[1] == '%': linec = False @@ -709,15 +692,15 @@ class YAPRun: line = txt[1] else: line = "" - if len(txt0) == 2: - cell = txt0[1] - else: - cell = "" if linec: self.shell.run_line_magic(magic, line) else: - print(txt0[1]) - self.shell.run_cell_magic(magic, line, txt0[1]) + print("txt0: ",txt0,"\n") + if len(txt0) == 1: + cell = "" + else: + body = txt0[1]+'\n'+txt0[2] + self.shell.run_cell_magic(magic, line, body) cell = "" # Give the displayhook a reference to our ExecutionResult so it # can fill in the output value. @@ -729,16 +712,16 @@ class YAPRun: if cell.strip('\n \t'): #create a Trace object, telling it what to ignore, and whether to # do tracing or line-counting or both. - tracer = trace.Trace( - #ignoredirs=[sys.prefix, sys.exec_prefix], - trace=1, - count=0) - - def f(self, cell): - self.jupyter_query( cell ) + # tracer = trace.Trace( + # #ignoredirs=[sys.prefix, sys.exec_prefix], + # trace=1, + # count=0) + # + # def f(self, cell): + # self.jupyter_query( cell ) # run the new command using the given tracer - # + # try: self.yapeng.mgoal(streams(True),"user") #state = tracer.runfunc(f,self,cell) @@ -746,7 +729,7 @@ class YAPRun: self.yapeng.mgoal(streams(False),"user") except Exception as e: has_raised = True - self.yapeng.mgoal(streams("off"),"user") + self.yapeng.mgoal(streams("off"),"user") if state: self.shell.last_execution_succeeded = True self.result.result = (True, dicts) From 8ab38125dbb4ff9c01fbff8616e9b301d6dfbda5 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 11:43:41 +0000 Subject: [PATCH 08/99] gecide6_first_try --- .../gecode_yap_cc_impl_auto_generated.icc | 4 +- packages/gecode/gecode6-common.icc | 59 +++++++++---------- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc b/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc index c170ac3c2..f0d153de9 100644 --- a/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc +++ b/packages/gecode/6.0.0/gecode_yap_cc_impl_auto_generated.icc @@ -112,8 +112,8 @@ static IntPropLevel gecode_IntPropLevel_from_term(YAP_Term X) if (X==gecode_IPL_VAL) return IPL_VAL; if (X==gecode_IPL_BND) return IPL_BND; if (X==gecode_IPL_DOM) return IPL_DOM; - if (X==gecode_IPL_SPEED) return IPL_SPEED; - if (X==gecode_IPL_MEMORY) return IPL_MEMORY; + // if (X==gecode_IPL_SPEED) return IPL_SPEED; + // if (X==gecode_IPL_MEMORY) return IPL_MEMORY; if (X==gecode_IPL_BASIC) return IPL_BASIC; if (X==gecode_IPL_ADVANCED) return IPL_ADVANCED; if (X==gecode_IPL_BASIC_ADVANCED) return IPL_BASIC_ADVANCED; diff --git a/packages/gecode/gecode6-common.icc b/packages/gecode/gecode6-common.icc index a912c5d1d..d527131b2 100644 --- a/packages/gecode/gecode6-common.icc +++ b/packages/gecode/gecode6-common.icc @@ -67,42 +67,39 @@ namespace generic_gecode class GenericSpace; - struct GenericEngine { - GenericSpace* next(void); - // virtual ~GenericEngine() {}; + virtual GenericSpace* next(void)=0; + virtual ~GenericEngine() {}; }; - struct GenericDFS: GenericEngine - { - DFS engine; - GenericDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} - GenericSpace* next(void) { return engine.next(); } - }; - - struct GenericRestartDFS: GenericEngine - { - RBS engine; - GenericRestartDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} - GenericSpace* next(void) { return engine.next(); } - }; - + struct GenericDFS: GenericEngine + { + DFS engine; + GenericDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + virtual GenericSpace* next(void) { return engine.next(); } + }; + struct GenericRestartDFS: GenericEngine + { + RBS engine; + GenericRestartDFS(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + virtual GenericSpace* next(void) { return engine.next(); } + }; struct GenericBAB: GenericEngine - { - BAB engine; - GenericBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} - GenericSpace* next(void) { return engine.next(); } - }; + { + BAB engine; + GenericBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + virtual GenericSpace* next(void) { return engine.next(); } + }; - struct GenericRestartBAB: GenericEngine - { - RBS engine; - GenericRestartBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} - GenericSpace* next(void) { return engine.next(); } - }; + struct GenericRestartBAB: GenericEngine + { + RBS engine; + GenericRestartBAB(GenericSpace* s,Search::Options& opt) : engine(s,opt) {} + virtual GenericSpace* next(void) { return engine.next(); } + }; #ifdef OLD struct GenericRestart: GenericEngine @@ -226,10 +223,10 @@ namespace generic_gecode public: Space* space() { return this; } - GenericSpace copy(bool share) - { freeze(); return *new GenericSpace(share, *this); } - + Space* copy(bool share) + { freeze(); return new GenericSpace(share, *this); } + Space* copy(void) {return copy(false);} GenericSpace(bool share, GenericSpace& s) : Space( s), optim(s.optim), dock(NULL), keeping_some(s.keeping_some) { From b54439d909746982e6d40552d617ba88c0e8d170 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 11:44:16 +0000 Subject: [PATCH 09/99] single_quotes --- C/flags.c | 86 ++++++++++++++++++++++++++++++----- H/YapFlags.h | 38 +++++++--------- H/YapGFlagInfo.h | 11 +++-- H/YapText.h | 42 ++++++++++++++++- H/Yatom.h | 5 ++ docs/tut.ipynb | 53 ++++++++------------- library/lammpi/CMakeLists.txt | 8 ++-- os/readterm.c | 6 +-- pl/boot.yap | 4 -- 9 files changed, 169 insertions(+), 84 deletions(-) diff --git a/C/flags.c b/C/flags.c index 5dd2fc60c..08946397f 100644 --- a/C/flags.c +++ b/C/flags.c @@ -51,7 +51,9 @@ static Term indexer(Term inp); static Term stream(Term inp); static bool getenc(Term inp); static bool typein(Term inp); -static bool dqf(Term t2); +static bool dqs(Term t2); +static bool bqs(Term t2); +static bool sqf(Term t2); static bool set_error_stream(Term inp); static bool set_input_stream(Term inp); static bool set_output_stream(Term inp); @@ -125,7 +127,7 @@ static bool dqf1(ModEntry *new, Term t2 USES_REGS) { } } -static bool dqf(Term t2) { +static bool dqs(Term t2) { CACHE_REGS ModEntry *new = Yap_GetModuleEntry(CurrentModule); return dqf1(new, t2 PASS_REGS); @@ -159,6 +161,48 @@ static bool bqf1(ModEntry *new, Term t2 USES_REGS) { } } +static bool bqs(Term t2) { + CACHE_REGS + ModEntry *new = Yap_GetModuleEntry(CurrentModule); + return bqf1(new, t2 PASS_REGS); +} + + +static bool sqf1(ModEntry *new, Term t2 USES_REGS) { + new->flags &= ~(SNGQ_CHARS | SNGQ_CODES | SNGQ_ATOM | SNGQ_STRING); + if (IsAtomTerm(t2)) { + if (t2 == TermString) { + new->flags |= SNGQ_STRING; + return true; + } else if (t2 == TermAtom) { + new->flags |= SNGQ_ATOM; + return true; + } else if (t2 == TermCodes) { + new->flags |= SNGQ_CODES; + return true; + } else if (t2 == TermChars) { + new->flags |= SNGQ_CHARS; + return true; + } + Yap_Error(DOMAIN_ERROR_OUT_OF_RANGE, t2, "bad option %s for backquoted " + "string flag, use one string, " + "atom, codes or chars", + RepAtom(AtomOfTerm(t2))->StrOfAE); + return false; + } else { + Yap_Error(TYPE_ERROR_ATOM, t2, "flag %s is not module-scoped", + RepAtom(AtomOfTerm(t2))->StrOfAE); + return false; + } +} + + +static bool sqf(Term t2) { + CACHE_REGS + ModEntry *new = Yap_GetModuleEntry(CurrentModule); + return sqf1(new, t2 PASS_REGS); +} + static Term isaccess(Term inp) { if (inp == TermReadWrite || inp == TermReadOnly) return inp; @@ -715,9 +759,11 @@ static bool setYapFlagInModule(Term tflag, Term t2, Term mod) { "bad option %s for character_escapes flag, use true or false", RepAtom(AtomOfTerm(tflag))->StrOfAE); return false; - } else if (fv->FlagOfVE == BACKQUOTED_STRING_FLAG) { + } else if (fv->FlagOfVE == BACK_QUOTES_FLAG) { return bqf1(me, t2 PASS_REGS); - ; + } else if (fv->FlagOfVE == SINGLE_QUOTES_FLAG) { + return sqf1(me, t2 PASS_REGS); + } // bad key? return false; @@ -744,7 +790,7 @@ static Term getYapFlagInModule(Term tflag, Term mod) { } else if (fv->FlagOfVE == CHARACTER_ESCAPES_FLAG) { if (me->flags & M_CHARESCAPE) return TermTrue; - } else if (fv->FlagOfVE == BACKQUOTED_STRING_FLAG) { + } else if (fv->FlagOfVE == BACK_QUOTES_FLAG) { if (me->flags & BCKQ_CHARS) return TermChars; if (me->flags & BCKQ_CODES) @@ -752,6 +798,14 @@ static Term getYapFlagInModule(Term tflag, Term mod) { if (me->flags & BCKQ_ATOM) return TermAtom; return TermString; + } else if (fv->FlagOfVE == SINGLE_QUOTES_FLAG) { + if (me->flags & SNGQ_CHARS) + return TermChars; + if (me->flags & SNGQ_CODES) + return TermCodes; + if (me->flags & SNGQ_ATOM) + return TermAtom; + return TermString; } else if (fv->FlagOfVE == DOUBLE_QUOTES_FLAG) { if (me->flags & DBLQ_CHARS) return TermChars; @@ -777,7 +831,9 @@ static Int cont_yap_flag(USES_REGS1) { Term modt = CurrentModule; tflag = Yap_StripModule(tflag, &modt); while (i != gmax && i != UNKNOWN_FLAG && i != CHARACTER_ESCAPES_FLAG && - i != BACKQUOTED_STRING_FLAG) + i != BACK_QUOTES_FLAG && + i != SINGLE_QUOTES_FLAG && + i != DOUBLE_QUOTES_FLAG) i++; if (i == gmax) cut_fail(); @@ -982,13 +1038,13 @@ void Yap_setModuleFlags(ModEntry *new, ModEntry *cme) { Atom at = new->AtomOfME; if (at == AtomProlog || CurrentModule == PROLOG_MODULE) { new->flags = - M_SYSTEM | UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING; + M_SYSTEM | UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING |SNGQ_ATOM; if (at == AtomUser) - new->flags = UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING; + new->flags = UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING |SNGQ_ATOM; } else if (cme && cme->flags && cme != new) { new->flags = cme->flags; } else { - new->flags = (UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING); + new->flags = (UNKNOWN_ERROR | M_CHARESCAPE | DBLQ_CODES | BCKQ_STRING |SNGQ_ATOM); } // printf("cme=%s new=%s flags=%x\n",cme,at->StrOfAE,new->flags); } @@ -1034,7 +1090,9 @@ bool setYapFlag(Term tflag, Term t2) { switch (fv->FlagOfVE) { case UNKNOWN_FLAG: case CHARACTER_ESCAPES_FLAG: - case BACKQUOTED_STRING_FLAG: + case BACK_QUOTES_FLAG: + case DOUBLE_QUOTES_FLAG: + case SINGLE_QUOTES_FLAG: return setYapFlagInModule(tflag, t2, CurrentModule); default: tarr = GLOBAL_Flags; @@ -1420,7 +1478,9 @@ do_prolog_flag_property(Term tflag, if (fv->global) { if (fv->FlagOfVE == UNKNOWN_FLAG || fv->FlagOfVE == CHARACTER_ESCAPES_FLAG || - fv->FlagOfVE == BACKQUOTED_STRING_FLAG) + fv->FlagOfVE == SINGLE_QUOTES_FLAG || + fv->FlagOfVE == DOUBLE_QUOTES_FLAG || + fv->FlagOfVE == BACK_QUOTES_FLAG) Yap_unify(TermModule, args[PROLOG_FLAG_PROPERTY_SCOPE].tvalue); rc = rc && Yap_unify(TermGlobal, args[PROLOG_FLAG_PROPERTY_SCOPE].tvalue); @@ -1453,7 +1513,9 @@ static Int cont_prolog_flag_property(USES_REGS1) { /* current_prolog_flag */ lab = MkAtomTerm(Yap_LookupAtom(local_flags_setup[i - gmax].name)); } else { if (i == UNKNOWN_FLAG || i == CHARACTER_ESCAPES_FLAG || - i == BACKQUOTED_STRING_FLAG) { + i == SINGLE_QUOTES_FLAG || + i == DOUBLE_QUOTES_FLAG || + i == BACK_QUOTES_FLAG) { Term labs[2]; labs[0] = MkVarTerm(); labs[1] = MkAtomTerm(Yap_LookupAtom(global_flags_setup[i].name)); diff --git a/H/YapFlags.h b/H/YapFlags.h index b9837678a..aaff6428f 100644 --- a/H/YapFlags.h +++ b/H/YapFlags.h @@ -162,19 +162,6 @@ static inline Term list_filler(Term inp) { return TermZERO; } -static Term bqs(Term inp) { - if (inp == TermCodes || inp == TermString || inp == TermSymbolChar) - return inp; - - if (IsAtomTerm(inp)) { - Yap_Error(DOMAIN_ERROR_OUT_OF_RANGE, inp, - "set_prolog_flag in {codes,string}"); - return TermZERO; - } - Yap_Error(TYPE_ERROR_ATOM, inp, "set_prolog_flag in {codes,string}"); - return TermZERO; -} - // INLINE_ONLY inline EXTERN Term isatom( Term inp ); static inline Term isatom(Term inp) { @@ -342,17 +329,26 @@ static inline Term getSyntaxErrorsFlag(void) { return LOCAL_Flags[SYNTAX_ERRORS_FLAG].at; } -static inline bool setBackQuotesFlag(Term val) { - if (!bqs(val)) - return false; - if (val == TermSymbolChar) - val = TermString; - GLOBAL_Flags[BACKQUOTED_STRING_FLAG].at = val; +// used to overwrite singletons quoteFunc flag +static inline bool setReadTermBackQuotesFlag(Term val) { + + GLOBAL_Flags[BACK_QUOTES_FLAG].at = val; return true; } -static inline Term getBackQuotesFlag(void) { - return GLOBAL_Flags[BACKQUOTED_STRING_FLAG].at; +static inline Term getReadTermBackQuotesFlag(void) { + Term val; + unsigned int flags = Yap_GetModuleEntry(CurrentModule)->flags; + if (flags & BCKQ_ATOM) { + val = TermAtom; + } else if (flags & BCKQ_STRING) { + val = TermString; + } else if (flags & BCKQ_CHARS) { + val = TermChars; + } else { + val = TermCodes; + } +return GLOBAL_Flags[BACK_QUOTES_FLAG].at = val; } static inline Term indexingMode(void) { return GLOBAL_Flags[INDEX_FLAG].at; } diff --git a/H/YapGFlagInfo.h b/H/YapGFlagInfo.h index 60697fba0..9e31a98b8 100644 --- a/H/YapGFlagInfo.h +++ b/H/YapGFlagInfo.h @@ -90,9 +90,9 @@ running on an Apple machine. YAP_FLAG(ARGV_FLAG, "argv", false, argv, "@boot", NULL), YAP_FLAG(ARITHMETIC_EXCEPTIONS_FLAG, "arithmetic_exceptions", true, booleanFlag, "true", NULL), - YAP_FLAG(BACKQUOTED_STRING_FLAG, "backquoted_string", true, isatom, - "string", ), /**> -If _Value_ is unbound, tell whether a double quoted list of characters + YAP_FLAG(BACK_QUOTES_FLAG, "back_quotes", true, isatom, + "string", bqs), /**> +If _Value_ is unbound, tell whether a back quoted list of characters token is converted to a list of atoms, `chars`, to a list of integers, `codes`, or to a single atom, `atom`. If _Value_ is bound, set to the corresponding behavior. The default value is `string` @@ -174,7 +174,7 @@ If `off` (default) consider the character `$` a control character, if `on` consider `$` a lower case character. */ YAP_FLAG(DOUBLE_QUOTES_FLAG, "double_quotes", true, isatom, "codes", - dqf), /**< `double_quotes is iso ` + dqs), /**< `double_quotes is iso ` If _Value_ is unbound, tell whether a double quoted list of characters token is converted to a list of atoms, `chars`, to a list of integers, @@ -383,6 +383,9 @@ Name of the environment variable used by the system to search for shared objects. */ + YAP_FLAG(SINGLE_QUOTES_FLAG, "single_quotes", true, isatom, "atom", + sqf), /**< `single_quoted text is usuallly interpreted as atoms. This flagTerm allows other inerpretations such as strings_contains_strings */ + YAP_FLAG(SIGNALS_FLAG, "signals", true, booleanFlag, "true", NULL), /**< `signals` diff --git a/H/YapText.h b/H/YapText.h index 3d789ab0e..7d5ac5a83 100644 --- a/H/YapText.h +++ b/H/YapText.h @@ -440,8 +440,33 @@ static inline seq_type_t mod_to_type(Term mod USES_REGS) { } // string type depends on current module -static inline seq_type_t mod_to_bqtype(Term mod USES_REGS) { +static inline seq_type_t mod_to_atype(Term mod USES_REGS) { + // see pl-incl.h + unsigned int flags = Yap_GetModuleEntry(mod)->flags; + if (flags & SNGQ_ATOM) { + return YAP_STRING_ATOM | YAP_STRING_OUTPUT_TERM; + } else if (flags & SNGQ_STRING) { + return YAP_STRING_STRING; + } else if (flags & SNGQ_CHARS) { + return YAP_STRING_ATOMS; + } + return YAP_STRING_CODES; +} + +// string type depends on current module +static inline seq_type_t mod_to_bqtype(Term mod USES_REGS) { + Term t2; + if ((t2 = GLOBAL_Flags[BACK_QUOTES_FLAG].at)) { + if (t2 == TermString) { + return YAP_STRING_STRING; + } else if (t2 == TermAtom) { + return YAP_STRING_ATOM | YAP_STRING_OUTPUT_TERM; + } else if (t2 == TermCodes) { + return YAP_STRING_CODES; + } + return YAP_STRING_ATOMS; + } // see pl-incl.h unsigned int flags = Yap_GetModuleEntry(mod)->flags; if (flags & BCKQ_ATOM) { @@ -906,6 +931,21 @@ static inline char *Yap_AtomToUTF8Text(Atom at USES_REGS) { return RepAtom(at)->StrOfAE; } +static inline Term Yap_CharsToTAQ(const char *s, Term mod, + encoding_t enc USES_REGS) { + seq_tv_t inp, out; + + inp.val.c0 = s; + inp.type = YAP_STRING_CHARS; + inp.mod = mod; + inp.enc = enc; + out.type = mod_to_atype(mod PASS_REGS); + out.val.uc = NULL; + if (!Yap_CVT_Text(&inp, &out PASS_REGS)) + return 0L; + return out.val.t; +} + static inline Term Yap_CharsToTDQ(const char *s, Term mod, encoding_t enc USES_REGS) { seq_tv_t inp, out; diff --git a/H/Yatom.h b/H/Yatom.h index 507e9bfbd..a7b58b730 100755 --- a/H/Yatom.h +++ b/H/Yatom.h @@ -279,6 +279,11 @@ INLINE_ONLY inline EXTERN bool IsModProperty(int flags) { #define UNKNOWN_MASK \ (UNKNOWN_ERROR | UNKNOWN_WARNING | UNKNOWN_FAIL | UNKNOWN_FAST_FAIL | \ UNKNOWN_ABORT | UNKNOWN_HALT) +#define SNGQ_CHARS (0x10000) /* 'ab' --> [a, b] */ +#define SNGQ_ATOM (0x20000) /* 'ab' --> ab */ +#define SNGQ_STRING (0x40000) /* 'ab' --> "ab" */ +#define SNGQ_CODES (0x80000) /* 'ab' --> [0'a, 0'b] */ +#define SNGQ_MASK (BCKQ_CHARS | BCKQ_ATOM | BCKQ_STRING | BCKQ_CODES) Term Yap_getUnknownModule(ModEntry *m); void Yap_setModuleFlags(ModEntry *n, ModEntry *o); diff --git a/docs/tut.ipynb b/docs/tut.ipynb index 738ecde94..d9755329b 100644 --- a/docs/tut.ipynb +++ b/docs/tut.ipynb @@ -393,29 +393,23 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "ERROR! Session/line number was not unique in database. History logging moved to new session 5605\n", " % reconsulting jupyter cell...\n", - " % reconsulted ??? in module user, 16 msec 0 bytes\n", + "charsio:3:0 warning: singleton variable Np in user:main/0.\n", "\n", - "No (more) answers\n" + " % reconsulted memStream in module user, 2 msec 0 bytes\n", + "charsio:1:0 error in prolog:'$handle_error'/3: error: procedure import/1 could not be found,\n", + " goal was prolog:context(user:import([matplotlib|pyplot]),prolog:'$gated_call'/4)\n", + " exception raised from prolog:'$handle_error':3, /Users/vsc/github/yap-6.3/pl/undefined.yap:0:0: \n", + "\n", + "\n" ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -519,29 +513,18 @@ "metadata": {}, "outputs": [ { - "ename": "SyntaxError", - "evalue": "bracket or operator expected. (, line 8)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m8\u001b[0m\n\u001b[0;31m Plt = bqplot.pyplot,\n Np = numpy,\n := Plt.figure(1, title=`Lin\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m bracket or operator expected.\n" - ] - }, - { - "ename": "SyntaxError", - "evalue": "bracket or operator expected. (, line 8)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m8\u001b[0m\n\u001b[0;31m lt = bqplot.pyplot,\n Np = numpy,\n := Plt.figure(1, title=`Line\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m bracket or operator expected.\n" - ] - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ " % reconsulting jupyter cell...\n", - ":- user:python_import(numoy) failed.\n", - " % reconsulted ??? in module user, 262 msec 0 bytes\n", - "No (more) answers\n" + ":- user:python:python_import(numoy) failed.\n", + "none:6:0 warning: syntax error bracket or operator expected.\n", + "- Plt = bqplot.pyplot,\n", + " Np = numpy,\n", + " := Plt.figure(1, title= <<<< at line 6 \n", + "\n", + "\n", + " % reconsulted memStream in module user, 145 msec 0 bytes\n" ] } ], diff --git a/library/lammpi/CMakeLists.txt b/library/lammpi/CMakeLists.txt index 88b59f7a5..1348e1ea3 100644 --- a/library/lammpi/CMakeLists.txt +++ b/library/lammpi/CMakeLists.txt @@ -68,8 +68,7 @@ set (MPI_YAP_SOURCES # pass to the MPI program. # - add_executable (yap_mpi ${MPI_YAP_SOURCES} Yaplib ../../console/yap.c) - + add_executable (yap_mpi ${MPI_YAP_SOURCES} ../../console/yap.c) target_link_libraries(yap_mpi libYap ${MPI_C_LIBRARIES}) set_target_properties (yap_mpi PROPERTIES PREFIX "") @@ -77,10 +76,11 @@ set (MPI_YAP_SOURCES include_directories (${MPI_C_INCLUDE_PATH}) add_definitions (-DHAVE_MPI_H=1) - target_compile_definitions(yap_mpi ${MPI_C_COMPILE_FLAGS}) + target_compile_definitions(yap_mpi + PRIVATE ${MPI_C_COMPILE_FLAGS}) install(TARGETS yap_mpi - RUNTIME DESTINATION ${YAP_INSTALL_BDIR} + RUNTIME DESTINATION ${bindir} ) endif (MPI_C_FOUND) diff --git a/os/readterm.c b/os/readterm.c index 476ae73b5..f7f8212a8 100644 --- a/os/readterm.c +++ b/os/readterm.c @@ -466,7 +466,7 @@ static xarg *setReadEnv(Term opts, FEnv *fe, struct renv *re, int inp_stream) { return NULL; } - re->bq = getBackQuotesFlag(); + re->bq = getReadTermBackQuotesFlag(); if (args[READ_OUTPUT].used) { fe->t0 = args[READ_OUTPUT].tvalue; } else { @@ -480,7 +480,7 @@ static xarg *setReadEnv(Term opts, FEnv *fe, struct renv *re, int inp_stream) { fe->cmod = PROLOG_MODULE; } if (args[READ_BACKQUOTED_STRING].used) { - if (!setBackQuotesFlag(args[READ_BACKQUOTED_STRING].tvalue)) { + if (!setReadTermBackQuotesFlag(args[READ_BACKQUOTED_STRING].tvalue)) { return false; } } @@ -1109,7 +1109,7 @@ static xarg *setClauseReadEnv(Term opts, FEnv *fe, struct renv *re, int sno) { if (fe->cmod == TermProlog) fe->cmod = PROLOG_MODULE; } - re->bq = getBackQuotesFlag(); + re->bq = getReadTermBackQuotesFlag(); fe->enc = GLOBAL_Stream[sno].encoding; fe->sp = 0; fe->qq = 0; diff --git a/pl/boot.yap b/pl/boot.yap index d386872e3..5f65dce47 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -251,12 +251,8 @@ initialize_prolog :- :- c_compile( 'modules.yap' ). :- c_compile( 'grammar.yap' ). -:- start_low_level_trace. - :- ['absf.yap']. -:- stop_low_level_trace. - :- use_module('error.yap'). :- [ From 927a43933ccc4d3def3563c1012a14bac4dee6fe Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 14:26:29 +0000 Subject: [PATCH 10/99] pythonless --- CMakeLists.txt | 2 +- CXX/CMakeLists.txt | 6 +++++- CXX/yapi.cpp | 6 ++++-- packages/python/pl2py.c | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 825093d50..d3f950bf7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -901,7 +901,7 @@ endif(NOT ANDROID) # -install(FILES ${INCLUDE_HEADERS} ${CONFIGURATION_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/Yap ) +install(FILES ${INCLUDE_HEADERS} ${CONFIGURATION_HEADERS} DESTINATION ${includedir}/Yap ) diff --git a/CXX/CMakeLists.txt b/CXX/CMakeLists.txt index 168e84cef..c1ef100b3 100644 --- a/CXX/CMakeLists.txt +++ b/CXX/CMakeLists.txt @@ -15,7 +15,11 @@ if ( WIN32 OR ANDROID) set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "_YAP_NOT_INSTALLED_=1;HAVE_CONFIG_H=1;_GNU_SOURCE;YAP_KERNEL=1" ) else() add_lib(YAP++ ${CXX_SOURCES} ) - target_link_libraries(YAP++ ${CMAKE_DL_LIBS} Py4YAP libYap) + if (WITH_PYTHON) + target_link_libraries(YAP++ Py4YAP ) + endif() + target_link_libraries(YAP++ ${CMAKE_DL_LIBS} libYap) + MY_install(TARGETS YAP++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index c3bc213f0..85b6e6fb3 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -10,7 +10,7 @@ extern "C" { #include "android/log.h" #endif -#if 1 +#if YAP_PYTHON #include "Python.h" #endif @@ -457,9 +457,11 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { bool YAPEngine::mgoal(Term t, Term tmod) { sigjmp_buf buf, *oldp = LOCAL_RestartEnv; - PyThreadState *_save; +#if YAP_PYTHON + //PyThreadState *_save; // _save = PyEval_SaveThread(); +#endif try { CACHE_REGS BACKUP_MACHINE_REGS(); diff --git a/packages/python/pl2py.c b/packages/python/pl2py.c index 130c77776..cde944664 100644 --- a/packages/python/pl2py.c +++ b/packages/python/pl2py.c @@ -263,7 +263,7 @@ PyObject *term_to_python(term_t t, bool eval, PyObject *o, bool cvt) { PyObject *ip = term_to_python(trhs, eval, o, cvt); if (PySequence_Check(v)) { #if PY_MAJOR_VERSION < 3 - if (PyLong_Check(ip) { + if (PyLong_Check(ip)) { min = PyLong_AsLong(ip); } else if (PyInt_Check(ip) { min = PyInt_asInt(ip); From 2e9be3d0d4a23194ec2e3660cf161c2336cf4797 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 15:41:06 +0000 Subject: [PATCH 11/99] droid --- C/c_interface.c | 5 +- C/cdmgr.c | 3 +- C/flags.c | 3 +- C/load_foreign.c | 5 +- C/tracer.c | 4 +- C/yap-args.c | 13 ++--- CMakeLists.txt | 3 +- CXX/yapdb.hh | 2 +- CXX/yapq.hh | 2 +- CXX/yapt.hh | 29 ++++++---- H/Yap.h | 1 + library/dialect/swi/os/pl-yap.h | 4 -- os/assets.c | 8 +-- os/readterm.c | 5 +- os/yapio.h | 6 +-- packages/myddas/myddas.h | 1 + packages/myddas/myddas_shared.c | 15 +----- packages/myddas/pl/CMakeLists.txt | 2 +- packages/myddas/pl/myddas.ypp | 3 +- packages/myddas/sqlite3/CMakeLists.txt | 3 ++ packages/myddas/sqlite3/myddas_sqlite3.c | 62 ++++++++++++++++++++-- packages/myddas/sqlite3/test.yap | 28 +++++----- packages/swig/android/CMakeLists.txt | 1 + packages/swig/android/streamer.cpp | 67 +++++++++++++++--------- packages/swig/android/streamer.h | 6 ++- packages/swig/yap.i | 6 ++- pl/CMakeLists.txt | 2 + pl/arith.yap | 3 +- pl/boot.yap | 11 +++- pl/imports.yap | 1 + 30 files changed, 194 insertions(+), 110 deletions(-) diff --git a/C/c_interface.c b/C/c_interface.c index aafa2b0f6..197b035c1 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -1452,11 +1452,10 @@ X_API Term YAP_ReadBuffer(const char *s, Term *tp) { if (*tp) tv = *tp; else - tv = 0; + tv = (Term)0; LOCAL_ErrorMessage = NULL; const unsigned char *us = (const unsigned char *)s; - while (!(t = Yap_BufferToTermWithPrioBindings(us, strlen(s) + 1, TermNil, - GLOBAL_MaxPriority, tv))) { + while (!(t = Yap_BufferToTermWithPrioBindings(us, TermNil, tv, strlen(s) + 1, GLOBAL_MaxPriority))) { if (LOCAL_ErrorMessage) { if (!strcmp(LOCAL_ErrorMessage, "Stack Overflow")) { if (!Yap_dogc(0, NULL PASS_REGS)) { diff --git a/C/cdmgr.c b/C/cdmgr.c index d72d2f7bf..42e36803f 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -36,6 +36,7 @@ static char SccsId[] = "@(#)cdmgr.c 1.1 05/02/98"; #include #include #include +#include static void retract_all(PredEntry *, int); static void add_first_static(PredEntry *, yamop *, int); @@ -1741,7 +1742,7 @@ bool Yap_addclause(Term t, yamop *cp, Term tmode, Term mod, Term *t4ref) /* The only problem we have now is when we need to throw away Indexing blocks */ - if (pflags & IndexedPredFlag) { + if (pflags & IndexedPredFlag && p->cs.p_code.NOfClauses > 1) { Yap_AddClauseToIndex(p, cp, mode == asserta); } if (pflags & (SpiedPredFlag | CountPredFlag | ProfiledPredFlag)) { diff --git a/C/flags.c b/C/flags.c index 5dd2fc60c..3a6cab1f1 100644 --- a/C/flags.c +++ b/C/flags.c @@ -1319,8 +1319,7 @@ static bool setInitialValue(bool bootstrap, flag_func f, const char *s, } CACHE_REGS const unsigned char *us = (const unsigned char *)s; - t0 = Yap_BufferToTermWithPrioBindings(us, strlen(s) + 1, TermNil, - GLOBAL_MaxPriority, 0L); + t0 = Yap_BufferToTermWithPrioBindings(us, TermNil, 0L, strlen(s) + 1, GLOBAL_MaxPriority); if (!t0) return false; if (IsAtomTerm(t0) || IsIntTerm(t0)) { diff --git a/C/load_foreign.c b/C/load_foreign.c index adb75e4c0..ea4d8ee97 100644 --- a/C/load_foreign.c +++ b/C/load_foreign.c @@ -45,6 +45,9 @@ Int p_load_foreign(USES_REGS1) { StringList new; bool returncode = FALSE; yhandle_t CurSlot = Yap_StartSlots(); +#if __ANDROID__ +return true; +#endif // Yap_DebugPlWrite(ARG1); printf("%s\n", " \n"); // Yap_DebugPlWrite(ARG2); printf("%s\n", " \n"); @@ -94,7 +97,7 @@ Int p_load_foreign(USES_REGS1) { } else { f = RepAtom(libs->name)->StrOfAE; } - Yap_Error(SYSTEM_ERROR_OPERATING_SYSTEM, ARG3, + Yap_Error(SYSTEM_ERROR_OPERATING_SYSTEM, ARG3, "Foreign module %s does not have initialization function %s", f, InitProcName); return false; diff --git a/C/tracer.c b/C/tracer.c index d060c5067..5052c6907 100644 --- a/C/tracer.c +++ b/C/tracer.c @@ -455,7 +455,7 @@ bool low_level_trace__(yap_low_level_port port, PredEntry *pred, CELL *args) { } UNLOCK(Yap_low_level_trace_lock); #if __ANDROID__ - __android_log_print(ANDROID_LOG_DEBUG, "YAPDroid", "%s\n", buf); + __android_log_print(ANDROID_LOG_ERROR, "YAPDroid", "%s\n", buf); #else *b++ = '\n'; *b = '\0'; @@ -510,7 +510,7 @@ not being output. static Int stop_low_level_trace(USES_REGS1) { Yap_do_low_level_trace = FALSE; LOCAL_do_trace_primitives = TRUE; -#if DEBUG_LOCKS +#if DEBUG_LOCKS//// debug_locks = TRUE; #endif return (TRUE); diff --git a/C/yap-args.c b/C/yap-args.c index f7deb5756..481e873a4 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -146,7 +146,7 @@ static void init_globals(YAP_init_args *yap_init) { } const char *Yap_BINDIR, *Yap_ROOTDIR, *Yap_SHAREDIR, *Yap_LIBDIR, *Yap_DLLDIR, - *Yap_PLDIR, *Yap_BOOTSTRAP, *Yap_COMMONSDIR, *Yap_STARTUP, + *Yap_PLDIR, *Yap_BOOTSTRAP, *Yap_COMMONSDIR, *Yap_INPUT_STARTUP, *Yap_OUTPUT_STARTUP, *Yap_BOOTFILE, *Yap_INCLUDEDIR; /* do initial boot by consulting the file boot.yap */ @@ -272,7 +272,7 @@ static void Yap_set_locations(YAP_init_args *iap) { /// DLLDIR: where libraries can find expicitely loaded DLLs Yap_DLLDIR = sel(true, iap->DLLDIR != NULL, iap->DLLDIR, true, #if __ANDROID__ - NULL + NULL, #else join(getenv("DESTDIR"), YAP_DLLDIR), #endif @@ -312,12 +312,12 @@ static void Yap_set_locations(YAP_init_args *iap) { /// BOOTPLDIR: where we can find Prolog bootstrap files Yap_BOOTSTRAP = sel(true, iap->BOOTSTRAP != NULL, iap->BOOTSTRAP, true, #if __ANDROID__ - "/assets/Yap/pl", + "/assets/Yap/pl/boot,yap", #else join(getenv("DESTDIR"), YAP_BOOTSTRAP), #endif false); - /// BOOTFILE: where we can find the core Prolog bootstrap file + /// BOOTFILE: where we can find the core Prolog boot file Yap_BOOTFILE = sel(false, iap->BOOTFILE != NULL, iap->BOOTFILE, true, #if __ANDROID__ "/assets/Yap/pl/boot.yap", @@ -453,7 +453,7 @@ X_API YAP_file_type_t Yap_InitDefaults(void *x, char *saved_state, int argc, memset(iap, 0, sizeof(YAP_init_args)); #if __ANDROID__ iap->boot_file_type = YAP_BOOT_PL; - iap->SavedState = NULL; + iap->INPUT_STARTUP = NULL; iap->assetManager = NULL; #else iap->boot_file_type = YAP_QLY; @@ -970,6 +970,7 @@ static void init_hw(YAP_init_args *yap_init, struct ssz_t *spt) { static YAP_file_type_t end_init(YAP_init_args *yap_init, YAP_file_type_t rc) { YAP_initialized = true; LOCAL_PrologMode &= ~BootMode; + CurrentModule = USER_MODULE; return rc; } @@ -1039,7 +1040,7 @@ X_API YAP_file_type_t YAP_Init(YAP_init_args *yap_init) { init_globals(yap_init); start_modules(); - consult(Yap_BOOTSTRAP PASS_REGS); + consult(Yap_BOOTFILE PASS_REGS); if (yap_init->install && Yap_OUTPUT_STARTUP) { Term t = MkAtomTerm(Yap_LookupAtom(Yap_OUTPUT_STARTUP)); Term g = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("qsave_program"), 1), diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c0410eb0..841762ce7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -706,9 +706,8 @@ IF ( ANDROID) - #target_link_libraries(libYap ${CMAKE_SOURCE_DIR}/../sqlite-android/jni/${ANDROID_ABI}/libsqliteX.so android log ) + target_link_libraries(libYap ${CMAKE_SOURCE_DIR}/../sqlite-android/jni/${ANDROID_ABI}/libsqliteX.so android log ) - target_link_libraries(libYap android log ) ENDIF () diff --git a/CXX/yapdb.hh b/CXX/yapdb.hh index d4838b5f3..5f76881ad 100644 --- a/CXX/yapdb.hh +++ b/CXX/yapdb.hh @@ -110,7 +110,7 @@ protected: const unsigned char *us = (const unsigned char *)s0; tnames = MkVarTerm(); tout = - Yap_BufferToTermWithPrioBindings(us, strlen(s0), TermNil, 1200, tnames); + Yap_BufferToTermWithPrioBindings(us, TermNil, tnames, strlen(s0), 1200); // fprintf(stderr,"ap=%p arity=%d text=%s", ap, ap->ArityOfPE, s); // Yap_DebugPlWrite(out); if (tout == 0L) { diff --git a/CXX/yapq.hh b/CXX/yapq.hh index cf5f31101..2ffd213ba 100644 --- a/CXX/yapq.hh +++ b/CXX/yapq.hh @@ -338,7 +338,7 @@ public: /// current directory for the engine bool call(YAPPredicate ap, YAPTerm ts[]); /// current directory for the engine - bool goalt(YAPTerm Yt) { return Yt.term(); }; + bool goal(YAPTerm Yt, YAPModule module) { return mgoal(Yt.term(),module.term()); }; /// current directory for the engine bool mgoal(Term t, Term tmod); /// current directory for the engine diff --git a/CXX/yapt.hh b/CXX/yapt.hh index 7f43481bd..edc4f154d 100644 --- a/CXX/yapt.hh +++ b/CXX/yapt.hh @@ -76,7 +76,7 @@ public: YAPTerm(void *ptr); /// parse string s and construct a term. YAPTerm(char *s) { - Term tp; + Term tp = 0; mk(YAP_ReadBuffer(s, &tp)); } @@ -322,20 +322,27 @@ public: RECOVER_MACHINE_REGS(); }; YAPApplTerm(YAPFunctor f, YAPTerm ts[]); - YAPApplTerm(const std::string s, std::vector ts); + YAPApplTerm(const std::string s, unsigned int arity) { mk(Yap_MkNewApplTerm(Yap_MkFunctor(Yap_LookupAtom(s.c_str()), arity), arity)); }; + YAPApplTerm(const std::string s, std::vector ts); YAPApplTerm(YAPFunctor f); inline Functor functor() { return FunctorOfTerm(gt()); } inline YAPFunctor getFunctor() { return YAPFunctor(FunctorOfTerm(gt())); } - Term getArg(arity_t i) { - BACKUP_MACHINE_REGS(); - Term t0 = gt(); - Term tf; - tf = ArgOfTerm(i, t0); - RECOVER_MACHINE_REGS(); - return tf; - }; - virtual bool isVar() { return false; } /// type check for unbound + Term getArg(arity_t i) { + BACKUP_MACHINE_REGS(); + Term t0 = gt(); + Term tf; + tf = ArgOfTerm(i, t0); + RECOVER_MACHINE_REGS(); + return tf; + }; + void putArg(int i, YAPTerm t) { + BACKUP_MACHINE_REGS(); + Term t0 = gt(); + RepAppl(t0)[i] = t.term(); + RECOVER_MACHINE_REGS(); + }; + virtual bool isVar() { return false; } /// type check for unbound virtual bool isAtom() { return false; } /// type check for atom virtual bool isInteger() { return false; } /// type check for integer virtual bool isFloat() { return false; } /// type check for floating-point diff --git a/H/Yap.h b/H/Yap.h index 630dd4b26..aa55fc997 100755 --- a/H/Yap.h +++ b/H/Yap.h @@ -263,6 +263,7 @@ extern size_t Yap_page_size; #define M1 ((CELL)(1024 * 1024)) #define M2 ((CELL)(2048 * 1024)) +typedef YAP_UInt CELL; #if ALIGN_LONGS typedef CELL SFLAGS; #else diff --git a/library/dialect/swi/os/pl-yap.h b/library/dialect/swi/os/pl-yap.h index fd79a3c1e..b1eade077 100644 --- a/library/dialect/swi/os/pl-yap.h +++ b/library/dialect/swi/os/pl-yap.h @@ -226,8 +226,4 @@ atom_t ATOM_; intptr_t system_thread_id(void); #endif -extern Term Yap_BufferToTermWithPrioBindings(const char *s, size_t len, - encoding_t enc, int prio, - Term *bindingsp); - #endif /* PL_YAP_H */ diff --git a/os/assets.c b/os/assets.c index 7f44a5d4f..0ab9adede 100644 --- a/os/assets.c +++ b/os/assets.c @@ -41,8 +41,8 @@ static char SccsId[] = "%W% %G%"; #include -extern void -Java_pt_up_yap_YAPIO_setAssetManager(JNIEnv *env, jclass clazz, jobject assetManager); +extern X_API void +Java_pt_up_yap_yapdroid_YAPDroid_loadAssetManager(JNIEnv *env, jclass clazz, jobject assetManager); jobject *Yap_aref; JNIEnv *Yap_env; @@ -52,8 +52,8 @@ AAssetManager *Yap_assetManager(void) return AAssetManager_fromJava(Yap_env, Yap_aref); } -void -Java_pt_up_yap_YAPIO_setAssetManager(JNIEnv *env, jclass clazz, jobject assetManager) { +X_API void +Java_pt_up_yap_yapdroid_YAPDroid_loadAssetManager(JNIEnv *env, jclass clazz, jobject assetManager) { Yap_aref = (*env)->NewGlobalRef(env,assetManager); Yap_env = env; } diff --git a/os/readterm.c b/os/readterm.c index 7aa7c9ce5..3524a8f58 100644 --- a/os/readterm.c +++ b/os/readterm.c @@ -1385,9 +1385,8 @@ Term Yap_BufferToTerm(const unsigned char *s, Term opts) { return rval; } -X_API Term Yap_BufferToTermWithPrioBindings(const unsigned char *s, size_t len, - Term opts, int prio, - Term bindings) { +X_API Term Yap_BufferToTermWithPrioBindings(const unsigned char *s, Term opts, Term bindings, size_t len, + int prio) { CACHE_REGS Term ctl; diff --git a/os/yapio.h b/os/yapio.h index 3bc389397..8dad6d06d 100644 --- a/os/yapio.h +++ b/os/yapio.h @@ -117,9 +117,9 @@ extern int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, memBufSource src); extern int Yap_open_buf_write_stream(encoding_t enc, memBufSource src); extern Term Yap_BufferToTerm(const unsigned char *s, Term opts); -extern X_API Term Yap_BufferToTermWithPrioBindings(const unsigned char *s, - size_t sz, Term opts, - int prio, Term bindings); +extern X_API Term +Yap_BufferToTermWithPrioBindings(const unsigned char *s, Term opts, Term bindings, size_t sz, + int prio); extern FILE *Yap_GetInputStream(Term t, const char *m); extern FILE *Yap_GetOutputStream(Term t, const char *m); extern char *Yap_guessFileName(FILE *f, int sno, char *nameb, size_t max); diff --git a/packages/myddas/myddas.h b/packages/myddas/myddas.h index 6a0cd0313..5a5cd0231 100644 --- a/packages/myddas/myddas.h +++ b/packages/myddas/myddas.h @@ -15,6 +15,7 @@ typedef struct myddas_global *MYDDAS_GLOBAL; #include "myddas_util.h" + #ifdef MYDDAS_STATS typedef struct myddas_stats_time_struct *MYDDAS_STATS_TIME; typedef struct myddas_global_stats *MYDDAS_GLOBAL_STATS; diff --git a/packages/myddas/myddas_shared.c b/packages/myddas/myddas_shared.c index 506b96c33..3808de728 100644 --- a/packages/myddas/myddas_shared.c +++ b/packages/myddas/myddas_shared.c @@ -680,26 +680,16 @@ void Yap_MYDDAS_delete_all_myddas_structs(void) { void init_myddas(void) { CACHE_REGS if (myddas_initialised) - return; + return; + init_sqlite3(); myddas_initialised = TRUE; #if defined MYDDAS_ODBC Yap_InitBackMYDDAS_ODBCPreds(); #endif -#if WIN32 - Yap_InitBackMYDDAS_SQLITE3Preds(); -#endif -#if defined USE_MYDDAS - Yap_InitBackMYDDAS_SharedPreds(); -#endif -#if defined MYDDAS_MYSQL - Yap_InitMYDDAS_MySQLPreds(); #endif #if defined MYDDAS_ODBC Yap_InitMYDDAS_ODBCPreds(); #endif -#if WIN32 - Yap_InitMYDDAS_SQLITE3Preds(); -#endif #if defined USE_MYDDAS Yap_InitMYDDAS_SharedPreds(); #endif @@ -743,4 +733,3 @@ int WINAPI win_myddas(HANDLE hinst, DWORD reason, LPVOID reserved) { } #endif -#endif /* USE_MYDDAS*/ diff --git a/packages/myddas/pl/CMakeLists.txt b/packages/myddas/pl/CMakeLists.txt index 7990e261e..7438710ff 100644 --- a/packages/myddas/pl/CMakeLists.txt +++ b/packages/myddas/pl/CMakeLists.txt @@ -72,6 +72,7 @@ foreach (driver ${MYDDAS_DBMS}) cpp_driver(MYDDAS_YAP ${driver} myddas_driver.ypp) endforeach () +list (APPEND MYDDAS_YAP ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/test.yap ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/chinook.db) add_to_group(MYDDAS_YAP pl_library ) add_custom_target(plmyddas ALL DEPENDS ${MYDDAS_YAP} ) @@ -79,4 +80,3 @@ add_custom_target(plmyddas ALL DEPENDS ${MYDDAS_YAP} ) install(FILES ${MYDDAS_YAP} DESTINATION ${libpl} ) - diff --git a/packages/myddas/pl/myddas.ypp b/packages/myddas/pl/myddas.ypp index f3a04f280..84fc35943 100644 --- a/packages/myddas/pl/myddas.ypp +++ b/packages/myddas/pl/myddas.ypp @@ -243,8 +243,7 @@ db_open(odbc,Connection,ODBCEntry,User,Password) :- %% sqlite3 db_open(sqlite3,Connection,File,User,Password) :- '$error_checks'(db_open(sqlite3,Connection,File,User,Password)), - absolute_file_name(File,FullFile,[access(exist),file_errors(error),expand(true)]), - c_sqlite3_connect(FullFile,User,Password,Con), + c_sqlite3_connect(File,User,Password,Con), set_value(Connection,Con). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/packages/myddas/sqlite3/CMakeLists.txt b/packages/myddas/sqlite3/CMakeLists.txt index 3f3877072..7dc998cde 100644 --- a/packages/myddas/sqlite3/CMakeLists.txt +++ b/packages/myddas/sqlite3/CMakeLists.txt @@ -53,3 +53,6 @@ install(TARGETS sqlite4YAP LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR} ) endif() + + file (INSTALL chinook.db test.yap DESTINATION ${libpl}) + diff --git a/packages/myddas/sqlite3/myddas_sqlite3.c b/packages/myddas/sqlite3/myddas_sqlite3.c index f48b87d49..ceff03c50 100644 --- a/packages/myddas/sqlite3/myddas_sqlite3.c +++ b/packages/myddas/sqlite3/myddas_sqlite3.c @@ -77,7 +77,7 @@ static Int c_sqlite3_get_database(USES_REGS1); static Int c_sqlite3_change_database(USES_REGS1); static Int c_sqlite3_connect(USES_REGS1) { - + printf("hello darkness\n"); Term arg_file = Deref(ARG1); Term arg_db = ARG4; @@ -96,7 +96,56 @@ static Int c_sqlite3_connect(USES_REGS1) { if (new == NULL) { #ifdef DEBUG - fprintf(stderr, "ERROR: ** c_db_my_connect ** Error allocating memory\n"); + fprintf(stderr, "ERROR: ** c_db_my_connect ** Error allocating memory\n");135761 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4011d 240 0 FAIL RETRY: prolog:$user_expansion(user:main, _135757:_135758 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4012d 173 0 CALL: prolog:$import_expansion(user:main, _135760:_135761 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4013d 239 0 CALL: prolog:$imported_predicate(main, user, _135761, _135760 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4014d 255 0 CALL: prolog:$is_system_predicate(main, prolog ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4015d 255 0 FAIL RETRY: prolog:$imported_predicate(main, user, _135761, _135760 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4016d 239 0 CALL: prolog:$undefined(main, user ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4017d 239 0 FAIL RETRY: prolog:$import_expansion(user:main, _135760:_135761 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4018d 173 0 CALL: prolog:$meta_expansion(user:main, user, [], _1048348 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4019d 238 0 CALL: prolog:$yap_strip_module(user:main, _135763, _1048327 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4020d 238 0 CALL: prolog:functor(main, _135766, _135767 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4021d 238 0 CALL: prolog:$meta_predicate(main, user, 0, _1048328 ) +03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4022d 238 0 FAIL RETRY: prolog:$meta_expansion(user:main, user, [], _1048348 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4023d 173 0 CALL: prolog:$yap_strip_module(user:main, _135763, _135764 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4024d 173 0 CALL: prolog:$yap_strip_module(user:main, _135765, _135766 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4025d 173 0 CALL: prolog:$end_goal_expansion(main, _135738, _135740, user, user, user, :-user:main ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4026d 173 0 CALL: prolog:$match_mod(main, user, user, user, _135738 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4027d 173 0 CALL: prolog:$is_system_predicate(main, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4028d 173 0 TRY_OR +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4029d 216 0 CALL: prolog:==(user, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4030d 216 0 CALL: prolog:==(user, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4031d 173 0 CALL: prolog:$c_built_in(main, user, :-user:main, _1048378 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4032d 209 0 CALL: prolog:get_value('$c_arith', true ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4033d 173 0 CALL: prolog:do_c_built_in(main, user, :-user:main, _1048378 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4034d 220 0 CALL: prolog:$compop(main, _1048340, _1048341, _1048343 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4035d 220 0 FAIL RETRY: prolog:do_c_built_in(main, user, :-user:main, _1048378 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4036d 220 0 CALL: prolog:$yap_strip_module(user:main, _135770, _135771 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4037d 220 0 CALL: prolog:$match_mod(main, user, user, user, _135740 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4038d 220 0 CALL: prolog:$is_system_predicate(main, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4039d 220 0 TRY_OR +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4040d 236 0 CALL: prolog:==(user, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4041d 236 0 CALL: prolog:==(user, user ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4042d 220 0 CALL: prolog:$yap_strip_module(user: (:-main), _135727, _135728 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4043d 158 0 TRY_OR +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4044d 172 0 CALL: prolog:==(158, 158 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4045d 105 0 CALL: prolog:$yap_strip_module(user: (:-main), _1048434, _135775 ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4046d 105 0 TRY_OR +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4047d 105 0 CALL: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4048d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4049d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4050d 130 0 CALL: prolog:$all_directives(main ) +03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4051d 130 0 CALL: prolog:$directive(main ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4052d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4053d 130 0 CALL: prolog:current_prolog_flag(language_mode, iso ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4054d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4055d 130 0 CALL: prolog:$execute(user:main ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4056d 130 0 CALL: user:main +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4057d 130 0 CALL: user:init +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4058d 130 0 CALL: user:db_open(sqlite3, '/data/user/0/pt.up.yap.yapdroid/files/Yap/chinook.db', _1048428, _1048429 ) +03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4059d 130 0 CALL: user:db_open(sqlite3, myddas, '/data/user/0/pt.up.yap.yapdr #endif return FALSE; } @@ -664,15 +713,18 @@ static void Yap_InitBackMYDDAS_SQLITE3Preds(void) { } X_API void init_sqlite3(void) { - // Yap_InitMYDDAS_SQLITE3Preds(); - // Yap_InitBackMYDDAS_SQLITE3Preds(); + Term cm = CurrentModule; + CurrentModule = PROLOG_MODULE; + Yap_InitMYDDAS_SQLITE3Preds(); + Yap_InitBackMYDDAS_SQLITE3Preds(); + CurrentModule = cm; } #if _ANDROID_ //JNIEXPORT void JNICALL lib_yap_up_pt_init_sqlite(JNIEnv *env); // JNIEXPORT void JNICALL lib_yap_up_pt_init_sqlite(JNIEnv *env) { -// init_sqlite3(); +init_sqlite3(); } #endif diff --git a/packages/myddas/sqlite3/test.yap b/packages/myddas/sqlite3/test.yap index afbcd481f..b550b970e 100644 --- a/packages/myddas/sqlite3/test.yap +++ b/packages/myddas/sqlite3/test.yap @@ -1,21 +1,18 @@ -:- [library(myddas)]. - -:- initialization(main). +:- compile(library(myddas)). main :- - setup_call_cleanup( - init, - main_ , - (trace, - close)). + init, + main_, + close. main_ :- go, fail. main_ . init :- - db_open(sqlite3, '~/Yap/Chinook/Chinook_Sqlite.sqlite', _, _), + db_open(sqlite3, '/data/user/0/pt.up.yap.yapdroid/files/Yap/chinook.db', _, _), + writeln('chinook has landed'), db_import('Artist', artist), db_import('Album', album), db_import('Track', track). @@ -25,26 +22,24 @@ init :- db_get_attributes_types(track,Ts), db_get_attributes_types(artist,As), writeln(As:Als:Ts). - go :- db_number_of_fields(album,Als), db_number_of_fields(track,Ts), db_number_of_fields(artist,As), writeln(As:Als:Ts). - go :- +go :- db_describe(album, Desc), writeln(Desc) ; db_describe(track, Desc), writeln(Desc) ; db_describe(artist, Desc), writeln(Desc). - - go :- +go :- db_show_tables(Desc), writeln(Desc). - go :- +go :- db_show_tables(table(T)), db_describe(T,tableinfo(FieldID,Type,Null,Primary,Default,'')), writeln(T:tableinfo(FieldID,Type,Null,Primary,Default,'')). - go :- +go :- go_cut0. @@ -79,3 +74,6 @@ go_cut1 :- close :- db_close. + +:- main. + diff --git a/packages/swig/android/CMakeLists.txt b/packages/swig/android/CMakeLists.txt index c736e7895..c247bb2e3 100644 --- a/packages/swig/android/CMakeLists.txt +++ b/packages/swig/android/CMakeLists.txt @@ -20,6 +20,7 @@ FILE( MAKE_DIRECTORY ${YAP_APP_DIR}/src/generated/jni) add_custom_target (pllib COMMAND ${CMAKE_COMMAND} -E make_directory ${pllib} COMMAND ${CMAKE_COMMAND} -E copy ${pl_library} ${pllib} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/android.yap ${pllib} DEPENDS ${pl_library} ) diff --git a/packages/swig/android/streamer.cpp b/packages/swig/android/streamer.cpp index ce99d8773..6e0fb4957 100644 --- a/packages/swig/android/streamer.cpp +++ b/packages/swig/android/streamer.cpp @@ -1,15 +1,21 @@ // -// Created by vsc on 7/6/17. +// Created by vsc on 7/6/17-> // -/* File : example.cxx */ +/* File : example->cxx */ #include "streamer.h" +extern "C" { + +extern void Java_pt_up_yap_streamerJNI_swig_1module_1init(void); + +} static AndroidStreamer * streamerInstance = 0; void setStreamer(AndroidStreamer* streamer) { streamerInstance = streamer; + Java_pt_up_yap_streamerJNI_swig_1module_1init(); } AndroidStreamer& getStreamer() { @@ -25,13 +31,11 @@ extern "C" { #include #include -extern void Java_pt_up_yap_streamerJNI_swig_1module_1init__(void); -static VFS_t andstream; -void Java_pt_up_yap_streamerJNI_swig_1module_1init__(void) { - // streamerInstance = 0; -} ; + +static VFS_t *andstream; + static std::string buff0; @@ -83,21 +87,34 @@ streamerInstance->display(buff0); } -void -AndroidStreamer::bind() { - buff0 = *new std::string[256]; - andstream.name = "/android/user_error"; - andstream.vflags = VFS_CAN_WRITE | VFS_HAS_PREFIX; - andstream.prefix = "/android"; - andstream.suffix = NULL; - andstream.open = and_open; - andstream.close = and_close; - andstream.get_char = and_get; - andstream.put_char = and_put; - andstream.flush = and_flush; - andstream.seek = and_seek; - andstream.next = GLOBAL_VFS; - GLOBAL_VFS = &andstream; - Yap_InitStdStream(StdOutStream, Output_Stream_f | Append_Stream_f, NULL, &andstream); - Yap_InitStdStream(StdErrStream, Output_Stream_f | Append_Stream_f, NULL, &andstream); -} + +extern "C" { + + +void Java_pt_up_yap_streamerJNI_swig_1module_1init(void) { + if (andstream) + return; + andstream = new VFS_t(); + + andstream->name = "android output window"; + andstream->vflags = VFS_CAN_WRITE | VFS_HAS_PREFIX; + andstream->prefix = "/android"; + andstream->suffix = NULL; + andstream->open = and_open; + andstream->close = and_close; + andstream->get_char = and_get; + andstream->put_char = and_put; + andstream->flush = and_flush; + andstream->seek = and_seek; + andstream->next = GLOBAL_VFS; + GLOBAL_VFS = andstream; + + YAP_Term ts[1], args[1], goal; + ts[0] = MkAtomTerm(Yap_LookupAtom("android")); + args[0] = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("library"),1), 1, ts); + goal = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("compile"),1), 1, args); + YAP_RunGoalOnce(goal); + } + + +} \ No newline at end of file diff --git a/packages/swig/android/streamer.h b/packages/swig/android/streamer.h index c713696c8..27b282fa3 100644 --- a/packages/swig/android/streamer.h +++ b/packages/swig/android/streamer.h @@ -9,10 +9,14 @@ #include #include + struct AndroidStreamer { + std::string *buff0; + virtual void display(std::string text) const = 0; virtual ~AndroidStreamer() {} - void bind(); + AndroidStreamer() { buff0 = new std::string[256]; + }; }; void setStreamer(AndroidStreamer* streamer); AndroidStreamer& getStreamer(); diff --git a/packages/swig/yap.i b/packages/swig/yap.i index 7bdd0e545..267115984 100644 --- a/packages/swig/yap.i +++ b/packages/swig/yap.i @@ -60,7 +60,11 @@ class YAPEngine; return NULL; } #endif - } + #ifdef SWIGJAVA0 + %typemap(javapackage) std::vector "pt.up.yap.YAPTerm" + %template(VectorOfTerm) std::vector; + #endif + } %} #ifdef SWIGPYTHON diff --git a/pl/CMakeLists.txt b/pl/CMakeLists.txt index d7a5636f8..6f114ad6b 100644 --- a/pl/CMakeLists.txt +++ b/pl/CMakeLists.txt @@ -8,6 +8,7 @@ set(PL_BOOT_SOURCES boot.yap bootlists.yap bootutils.yap + builtins.yap callcount.yap checker.yap consult.yap @@ -26,6 +27,7 @@ set(PL_BOOT_SOURCES grammar.yap ground.yap hacks.yap + imports.yap init.yap listing.yap load_foreign.yap diff --git a/pl/arith.yap b/pl/arith.yap index a6b5a78d9..1cc22afea 100644 --- a/pl/arith.yap +++ b/pl/arith.yap @@ -342,7 +342,7 @@ expand_expr(Op, X, Y, O, Q, P) :- %% contains_illegal_dcgnt(+Term) is semidet. % % True if Term contains a non-terminal we cannot deal with using -% goal-expansion. The test is too general approximation, but safe. +% goal-expansion. The test is too general an approximation, but safe. '$contains_illegal_dcgnt'(NT) :- functor(NT, _, A), @@ -356,7 +356,6 @@ expand_expr(Op, X, Y, O, Q, P) :- '$harmless_dcgexception'(instantiation_error). % ex: phrase(([1],x:X,[3]),L) '$harmless_dcgexception'(type_error(callable,_)). % ex: phrase(27,L) - :- set_value('$c_arith',true). /** @} diff --git a/pl/boot.yap b/pl/boot.yap index d6286f335..b890488a9 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -293,7 +293,7 @@ initialize_prolog :- 'qly.yap', 'spy.yap', 'udi.yap']. -:- stop_low_level_trace. +%:- stop_low_level_trace. :- meta_predicate(log_event(+,:)). @@ -461,3 +461,12 @@ If this hook predicate succeeds it must instantiate the _Action_ argument to th :- ensure_loaded('../pl/pathconf.yap'). :- yap_flag(user:unknown,error). + + +:- compile('../myddas'). + +:- start_low_level_trace. + +%:- db_open(sqlite3, '/asssets/Yap/chinook.db', _, _). + +:- compile('../test'). diff --git a/pl/imports.yap b/pl/imports.yap index 77158a199..ae68ae320 100644 --- a/pl/imports.yap +++ b/pl/imports.yap @@ -1,5 +1,6 @@ :- '$mk_dynamic'('$parent_module'(_,_),prolog). + '$get_undefined_predicates'(G, ImportingMod, G0, ExportingMod) :- recorded('$import','$import'(ExportingModI,ImportingMod,G0I,G,_,_),_), '$continue_imported'(ExportingMod, ExportingModI, G0, G0I). From 1ff06fd2e019ef085c95074d1358366cf2144474 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 15:41:53 +0000 Subject: [PATCH 12/99] integrate backcall --- CMakeLists.txt | 1 - info/meta.yaml | 1 - packages/python/yap_kernel/setup.py | 2 +- .../yap_kernel/yap_ipython/core/backcall.py | 109 ++++++++++++++++++ .../yap_ipython/core/tests/test_events.py | 2 +- 5 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 packages/python/yap_kernel/yap_ipython/core/backcall.py diff --git a/CMakeLists.txt b/CMakeLists.txt index d3f950bf7..27d15849c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -688,7 +688,6 @@ if (PYTHONLIBS_FOUND AND SWIG_FOUND) find_python_module(jupyter) find_python_module(wheel) find_python_module(setuptools) - find_python_module(backcall) if (PY_JUPYTER AND PY_WHEEL AND PY_SETUPTOOLS AND PY_BACKCALL) add_subdirectory(packages/python/yap_kernel) ENDIF () diff --git a/info/meta.yaml b/info/meta.yaml index 24b367100..cd9f197cd 100644 --- a/info/meta.yaml +++ b/info/meta.yaml @@ -19,7 +19,6 @@ requirements: - libxml2 - backcall run: - - backcall - jupyterlab - python - readline diff --git a/packages/python/yap_kernel/setup.py b/packages/python/yap_kernel/setup.py index 9e0b36d09..dd108a73e 100644 --- a/packages/python/yap_kernel/setup.py +++ b/packages/python/yap_kernel/setup.py @@ -67,7 +67,7 @@ setup_args = dict( version = version_ns['__version__'], scripts = glob(pjoin('scripts', '*')), packages = packages, - py_modules = ['yap_kernel_launcher'], + py_modules = ['yap_kernel_launcher','backcall'], package_data = package_data, #package_dir = {'':here}, description = "YAP Kernel for Jupyter", diff --git a/packages/python/yap_kernel/yap_ipython/core/backcall.py b/packages/python/yap_kernel/yap_ipython/core/backcall.py new file mode 100644 index 000000000..fe1fdb547 --- /dev/null +++ b/packages/python/yap_kernel/yap_ipython/core/backcall.py @@ -0,0 +1,109 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Jan 13 18:17:15 2014 + +@author: takluyver +""" +import sys +PY3 = (sys.version_info[0] >= 3) + +try: + from inspect import signature, Parameter # Python >= 3.3 +except ImportError: + from ._signatures import signature, Parameter + +if PY3: + from functools import wraps +else: + from functools import wraps as _wraps + def wraps(f): + def dec(func): + _wraps(f)(func) + func.__wrapped__ = f + return func + + return dec + +def callback_prototype(prototype): + """Decorator to process a callback prototype. + + A callback prototype is a function whose signature includes all the values + that will be passed by the callback API in question. + + The original function will be returned, with a ``prototype.adapt`` attribute + which can be used to prepare third party callbacks. + """ + protosig = signature(prototype) + positional, keyword = [], [] + for name, param in protosig.parameters.items(): + if param.kind in (Parameter.VAR_POSITIONAL, Parameter.VAR_KEYWORD): + raise TypeError("*args/**kwargs not supported in prototypes") + + if (param.default is not Parameter.empty) \ + or (param.kind == Parameter.KEYWORD_ONLY): + keyword.append(name) + else: + positional.append(name) + + kwargs = dict.fromkeys(keyword) + def adapt(callback): + """Introspect and prepare a third party callback.""" + sig = signature(callback) + try: + # XXX: callback can have extra optional parameters - OK? + sig.bind(*positional, **kwargs) + return callback + except TypeError: + pass + + # Match up arguments + unmatched_pos = positional[:] + unmatched_kw = kwargs.copy() + unrecognised = [] + # TODO: unrecognised parameters with default values - OK? + for name, param in sig.parameters.items(): + # print(name, param.kind) #DBG + if param.kind == Parameter.POSITIONAL_ONLY: + if len(unmatched_pos) > 0: + unmatched_pos.pop(0) + else: + unrecognised.append(name) + elif param.kind == Parameter.POSITIONAL_OR_KEYWORD: + if (param.default is not Parameter.empty) and (name in unmatched_kw): + unmatched_kw.pop(name) + elif len(unmatched_pos) > 0: + unmatched_pos.pop(0) + else: + unrecognised.append(name) + elif param.kind == Parameter.VAR_POSITIONAL: + unmatched_pos = [] + elif param.kind == Parameter.KEYWORD_ONLY: + if name in unmatched_kw: + unmatched_kw.pop(name) + else: + unrecognised.append(name) + else: # VAR_KEYWORD + unmatched_kw = {} + + # print(unmatched_pos, unmatched_kw, unrecognised) #DBG + + if unrecognised: + raise TypeError("Function {!r} had unmatched arguments: {}".format(callback, unrecognised)) + + n_positional = len(positional) - len(unmatched_pos) + + @wraps(callback) + def adapted(*args, **kwargs): + """Wrapper for third party callbacks that discards excess arguments""" +# print(args, kwargs) + args = args[:n_positional] + for name in unmatched_kw: + # XXX: Could name not be in kwargs? + kwargs.pop(name) +# print(args, kwargs, unmatched_pos, cut_positional, unmatched_kw) + return callback(*args, **kwargs) + + return adapted + + prototype.adapt = adapt + return prototype \ No newline at end of file diff --git a/packages/python/yap_kernel/yap_ipython/core/tests/test_events.py b/packages/python/yap_kernel/yap_ipython/core/tests/test_events.py index d95024cf9..fa2ec60e0 100644 --- a/packages/python/yap_kernel/yap_ipython/core/tests/test_events.py +++ b/packages/python/yap_kernel/yap_ipython/core/tests/test_events.py @@ -1,4 +1,4 @@ -from backcall import callback_prototype +from yap_ipython.core.backcall import callback_prototype import unittest from unittest.mock import Mock import nose.tools as nt From da68741b745c3de0d2f418abc135bd34b3dda1e4 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 15:43:06 +0000 Subject: [PATCH 13/99] integrate backcall --- packages/python/yap_kernel/yap_ipython/core/events.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/yap_kernel/yap_ipython/core/events.py b/packages/python/yap_kernel/yap_ipython/core/events.py index 3431a5398..64d05e919 100644 --- a/packages/python/yap_kernel/yap_ipython/core/events.py +++ b/packages/python/yap_kernel/yap_ipython/core/events.py @@ -13,7 +13,7 @@ events and the arguments which will be passed to them. This API is experimental in yap_ipython 2.0, and may be revised in future versions. """ -from backcall import callback_prototype +from yap_ipython.core.backcall import callback_prototype class EventManager(object): From 98d52ba347ebdfe62e940f25a151f219621eed8e Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 19 Mar 2018 23:01:55 +0000 Subject: [PATCH 14/99] - install missing includes - path handling in python - android-only stuff, --- os/CMakeLists.txt | 1 + packages/myddas/myddas_shared.c | 8 +-- packages/myddas/pl/CMakeLists.txt | 2 +- packages/myddas/sqlite3/CMakeLists.txt | 2 +- packages/myddas/sqlite3/myddas_sqlite3.c | 64 ++---------------------- packages/python/swig/CMakeLists.txt | 2 +- packages/python/swig/setup.py.in | 2 +- pl/boot.yap | 7 --- 8 files changed, 14 insertions(+), 74 deletions(-) diff --git a/os/CMakeLists.txt b/os/CMakeLists.txt index dac6284cc..0943590de 100644 --- a/os/CMakeLists.txt +++ b/os/CMakeLists.txt @@ -2,6 +2,7 @@ set (YAPOS_HEADERS getw.h iopreds.h yapio.h + encoding.h ) set (YAPOS_SOURCES diff --git a/packages/myddas/myddas_shared.c b/packages/myddas/myddas_shared.c index 3808de728..161e5b64b 100644 --- a/packages/myddas/myddas_shared.c +++ b/packages/myddas/myddas_shared.c @@ -99,6 +99,7 @@ static bool myddas_initialised; /* Initialize all of the MYDDAS global structures */ static Int c_db_initialize_myddas(USES_REGS1) { if (!myddas_initialised) { + myddas_initialised= true; init_myddas(); } Yap_REGS.MYDDAS_GLOBAL_POINTER = myddas_init_initialize_myddas(); @@ -681,8 +682,9 @@ void init_myddas(void) { CACHE_REGS if (myddas_initialised) return; - init_sqlite3(); - myddas_initialised = TRUE; +#ifdef __ANDROID__ + init_sqlite3(); + #endif #if defined MYDDAS_ODBC Yap_InitBackMYDDAS_ODBCPreds(); #endif @@ -710,6 +712,7 @@ void init_myddas(void) { Yap_MYDDAS_delete_all_myddas_structs(); #endif c_db_initialize_myddas(PASS_REGS1); + myddas_initialised = TRUE; } #ifdef _WIN32 @@ -732,4 +735,3 @@ int WINAPI win_myddas(HANDLE hinst, DWORD reason, LPVOID reserved) { return 1; } #endif - diff --git a/packages/myddas/pl/CMakeLists.txt b/packages/myddas/pl/CMakeLists.txt index 7438710ff..8e9e5f36c 100644 --- a/packages/myddas/pl/CMakeLists.txt +++ b/packages/myddas/pl/CMakeLists.txt @@ -72,7 +72,7 @@ foreach (driver ${MYDDAS_DBMS}) cpp_driver(MYDDAS_YAP ${driver} myddas_driver.ypp) endforeach () -list (APPEND MYDDAS_YAP ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/test.yap ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/chinook.db) +#list (APPEND MYDDAS_YAP ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/test.yap ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/chinook.db) add_to_group(MYDDAS_YAP pl_library ) add_custom_target(plmyddas ALL DEPENDS ${MYDDAS_YAP} ) diff --git a/packages/myddas/sqlite3/CMakeLists.txt b/packages/myddas/sqlite3/CMakeLists.txt index 7dc998cde..86026ed36 100644 --- a/packages/myddas/sqlite3/CMakeLists.txt +++ b/packages/myddas/sqlite3/CMakeLists.txt @@ -54,5 +54,5 @@ install(TARGETS sqlite4YAP ) endif() - file (INSTALL chinook.db test.yap DESTINATION ${libpl}) + # file (INSTALL chinook.db test.yap DESTINATION ${libpl}) diff --git a/packages/myddas/sqlite3/myddas_sqlite3.c b/packages/myddas/sqlite3/myddas_sqlite3.c index 0d8369eea..9d0ff72b4 100644 --- a/packages/myddas/sqlite3/myddas_sqlite3.c +++ b/packages/myddas/sqlite3/myddas_sqlite3.c @@ -88,64 +88,15 @@ static Int c_sqlite3_connect(USES_REGS1) { CALL_SQLITE(ARG1, open(file, &db)); - if (!Yap_unify(arg_db, MkAddressTerm(db))) + if (!Yap_unify(arg_db, MkAddressTerm(db))) { return FALSE; - else { + } else { /* Criar um novo no na lista de ligacoes*/ new = myddas_util_add_connection(db, NULL, API_SQLITE3); if (new == NULL) { #ifdef DEBUG - fprintf(stderr, "ERROR: ** c_db_my_connect ** Error allocating memory\n");135761 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4011d 240 0 FAIL RETRY: prolog:$user_expansion(user:main, _135757:_135758 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4012d 173 0 CALL: prolog:$import_expansion(user:main, _135760:_135761 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4013d 239 0 CALL: prolog:$imported_predicate(main, user, _135761, _135760 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4014d 255 0 CALL: prolog:$is_system_predicate(main, prolog ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4015d 255 0 FAIL RETRY: prolog:$imported_predicate(main, user, _135761, _135760 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4016d 239 0 CALL: prolog:$undefined(main, user ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4017d 239 0 FAIL RETRY: prolog:$import_expansion(user:main, _135760:_135761 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4018d 173 0 CALL: prolog:$meta_expansion(user:main, user, [], _1048348 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4019d 238 0 CALL: prolog:$yap_strip_module(user:main, _135763, _1048327 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4020d 238 0 CALL: prolog:functor(main, _135766, _135767 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4021d 238 0 CALL: prolog:$meta_predicate(main, user, 0, _1048328 ) -03-16 17:31:30.590 25588-25588/? E/YAPDroid: 4022d 238 0 FAIL RETRY: prolog:$meta_expansion(user:main, user, [], _1048348 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4023d 173 0 CALL: prolog:$yap_strip_module(user:main, _135763, _135764 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4024d 173 0 CALL: prolog:$yap_strip_module(user:main, _135765, _135766 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4025d 173 0 CALL: prolog:$end_goal_expansion(main, _135738, _135740, user, user, user, :-user:main ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4026d 173 0 CALL: prolog:$match_mod(main, user, user, user, _135738 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4027d 173 0 CALL: prolog:$is_system_predicate(main, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4028d 173 0 TRY_OR -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4029d 216 0 CALL: prolog:==(user, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4030d 216 0 CALL: prolog:==(user, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4031d 173 0 CALL: prolog:$c_built_in(main, user, :-user:main, _1048378 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4032d 209 0 CALL: prolog:get_value('$c_arith', true ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4033d 173 0 CALL: prolog:do_c_built_in(main, user, :-user:main, _1048378 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4034d 220 0 CALL: prolog:$compop(main, _1048340, _1048341, _1048343 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4035d 220 0 FAIL RETRY: prolog:do_c_built_in(main, user, :-user:main, _1048378 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4036d 220 0 CALL: prolog:$yap_strip_module(user:main, _135770, _135771 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4037d 220 0 CALL: prolog:$match_mod(main, user, user, user, _135740 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4038d 220 0 CALL: prolog:$is_system_predicate(main, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4039d 220 0 TRY_OR -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4040d 236 0 CALL: prolog:==(user, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4041d 236 0 CALL: prolog:==(user, user ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4042d 220 0 CALL: prolog:$yap_strip_module(user: (:-main), _135727, _135728 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4043d 158 0 TRY_OR -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4044d 172 0 CALL: prolog:==(158, 158 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4045d 105 0 CALL: prolog:$yap_strip_module(user: (:-main), _1048434, _135775 ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4046d 105 0 TRY_OR -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4047d 105 0 CALL: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4048d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4049d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4050d 130 0 CALL: prolog:$all_directives(main ) -03-16 17:31:30.591 25588-25588/? E/YAPDroid: 4051d 130 0 CALL: prolog:$directive(main ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4052d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4053d 130 0 CALL: prolog:current_prolog_flag(language_mode, iso ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4054d 130 0 FAIL RETRY: prolog:$process_directive(main, reconsult, user, [], '$stream_position'(1342,80,1,0) ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4055d 130 0 CALL: prolog:$execute(user:main ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4056d 130 0 CALL: user:main -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4057d 130 0 CALL: user:init -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4058d 130 0 CALL: user:db_open(sqlite3, '/data/user/0/pt.up.yap.yapdroid/files/Yap/chinook.db', _1048428, _1048429 ) -03-16 17:31:30.592 25588-25588/? E/YAPDroid: 4059d 130 0 CALL: user:db_open(sqlite3, myddas, '/data/user/0/pt.up.yap.yapdr + fprintf(stderr, "ERROR: ** c_db_my_connect ** Error allocating memory\n"); #endif return FALSE; } @@ -714,17 +665,10 @@ static void Yap_InitBackMYDDAS_SQLITE3Preds(void) { X_API void init_sqlite3(void) { Yap_InitMYDDAS_SQLITE3Preds(); + Yap_InitBackMYDDAS_SQLITE3Preds(); } -#if _ANDROID_ -//JNIEXPORT void JNICALL lib_yap_up_pt_init_sqlite(JNIEnv *env); - -// JNIEXPORT void JNICALL lib_yap_up_pt_init_sqlite(JNIEnv *env) { -init_sqlite3(); -} - -#endif #ifdef _WIN32 diff --git a/packages/python/swig/CMakeLists.txt b/packages/python/swig/CMakeLists.txt index 18626cc54..caffd1bf2 100644 --- a/packages/python/swig/CMakeLists.txt +++ b/packages/python/swig/CMakeLists.txt @@ -19,7 +19,7 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py) set(YAP4PY_PL prolog/yapi.yap) set(YAP4PY_PY yap4py/__main__.py yap4py/yapi.py) -configure_file("setup.py.in" setup.py) +configure_file("setup.py.in" ${CMAKE_CURRENT_BINARY_DIR}/setup.py) configure_file("MANIFEST.in" ${CMAKE_CURRENT_BINARY_DIR}/MANIFEST.in) configure_file("YAP4PY.md" README.md) configure_file(yap4py/__init__.py.in yap4py/__init__.py) diff --git a/packages/python/swig/setup.py.in b/packages/python/swig/setup.py.in index 1e23aa75e..d58ecc2a3 100644 --- a/packages/python/swig/setup.py.in +++ b/packages/python/swig/setup.py.in @@ -69,7 +69,7 @@ elif platform.system() == 'Darwin': win_libs = [] local_libs = ['Py4YAP'] elif platform.system() == 'Linux': - my_extra_link_args = ['-L','..','-Wl,-rpath,'+abspath(join(sysconfig.get_path('platlib'),'yap4py')),'-Wl,-rpath,${CMAKE_INSTALL_FULL_LIBDIR}','-Wl,-rpath,../yap4py'] + my_extra_link_args = ['-L','..','-Wl,-rpath,'+abspath(join(sysconfig.get_path('platlib'),'yap4py')),'-Wl,-rpath,@CMAKE_INSTALL_FULL_LIBDIR@','-Wl,-rpath,'+join('@CMAKE_INSTALL_FULL_LIBDIR@','..'),'-Wl,-rpath,../yap4py'] win_libs = [] local_libs = ['Py4YAP'] diff --git a/pl/boot.yap b/pl/boot.yap index 884300ef6..daad9c7b2 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -463,10 +463,3 @@ If this hook preodicate succeeds it must instantiate the _Action_ argument to t :- yap_flag(user:unknown,error). -:- compile('../myddas'). - -:- start_low_level_trace. - -%:- db_open(sqlite3, '/asssets/Yap/chinook.db', _, _). - -:- compile('../test'). From ff149367e8f8b27c30c2c6b4be14ee7716769c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Tue, 20 Mar 2018 00:57:27 +0000 Subject: [PATCH 15/99] carry your own backall, and remove some debugging stuff --- CMakeLists.txt | 6 +- info/meta.yaml | 2 - misc/backcall-0.1.0-cp36-none-any.whl | Bin 0 -> 11964 bytes packages/python/pyio.c | 5 +- packages/python/pypreds.c | 704 +------------------------- 5 files changed, 9 insertions(+), 708 deletions(-) create mode 100644 misc/backcall-0.1.0-cp36-none-any.whl diff --git a/CMakeLists.txt b/CMakeLists.txt index 95af06284..4c52f92e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -689,7 +689,11 @@ if (PYTHONLIBS_FOUND AND SWIG_FOUND) find_python_module(wheel) find_python_module(setuptools) find_python_module(backcall) - if (PY_JUPYTER AND PY_WHEEL AND PY_SETUPTOOLS AND PY_BACKCALL) + if (NOT FOUND_BACKALL) + #bring your own + execute_process( COMMAND ${PYTHON_EXECUTABLE} -m pip install ${CMAKE_SOURCE_DIR}/misc/backcall-0.1.0-cp36-none-any.whl) + endif() + if (PY_JUPYTER AND PY_WHEEL AND PY_SETUPTOOLS) add_subdirectory(packages/python/yap_kernel) ENDIF () diff --git a/info/meta.yaml b/info/meta.yaml index 24b367100..d75d2ba34 100644 --- a/info/meta.yaml +++ b/info/meta.yaml @@ -17,9 +17,7 @@ requirements: - pkgconfig - make - libxml2 - - backcall run: - - backcall - jupyterlab - python - readline diff --git a/misc/backcall-0.1.0-cp36-none-any.whl b/misc/backcall-0.1.0-cp36-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c08fa1b1527e860e1c78bd5de7fd4061d7766cfb GIT binary patch literal 11964 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 XryV6ZNT|OW!2Z7e+G#$}|5f{c1p53t literal 0 HcmV?d00001 diff --git a/packages/python/pyio.c b/packages/python/pyio.c index ceac10525..eef418471 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -89,8 +89,9 @@ static bool getLine(int inp) { char *myrl_line = NULL; StreamDesc *rl_instream = YAP_RepStreamFromId(inp); term_t ctk = python_acquire_GIL(); - PyObject*prompt = PyUnicode_FromString( "?- "), - *msg = PyUnicode_FromString(""); + fprintf(stderr,"in"); + PyObject*prompt = PyUnicode_FromString( "?- "), + *msg = PyUnicode_FromString(" **input** "); /* window of vulnerability opened */ myrl_line = PyUnicode_AsUTF8(PyObject_CallFunctionObjArgs(rl_instream->u.private_data,msg,prompt,NULL)); python_release_GIL(ctk); diff --git a/packages/python/pypreds.c b/packages/python/pypreds.c index d03e1ac34..7f94f54e5 100644 --- a/packages/python/pypreds.c +++ b/packages/python/pypreds.c @@ -1,703 +1 @@ - -#include "py4yap.h" - -PyObject *py_Main; - -void pyErrorHandler__(int line, const char *file, const char *code) { - // this code is called if a Python error is found. - fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); - PyErr_Print(); -} -static foreign_t python_len(term_t tobj, term_t tf) { - Py_ssize_t len; - PyObject *o; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - len = PyObject_Length(o); - pyErrorAndReturn(PL_unify_int64(tf, len)); -} - -static foreign_t python_dir(term_t tobj, term_t tf) { - PyObject *dir; - PyObject *o; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - dir = PyObject_Dir(o); - { - foreign_t rc = address_to_term(dir, tf); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { - PyObject *i; - PyObject *o; - PyObject *f; - - o = term_to_python(tobj, true, NULL, true); - if (o == NULL) { - pyErrorAndReturn(false); - } - if (!PySequence_Check(o)) { - pyErrorAndReturn(false); - } - i = term_to_python(tindex, true, NULL, true); - if (i == NULL) { - pyErrorAndReturn(false); - } -#if PY_MAJOR_VERSION < 3 - f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); -#else - f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); -#endif - { - foreign_t rc = address_to_term(f, val); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_is(term_t tobj, term_t tf) { - PyObject *o; - - term_t lim = python_acquire_GIL(); - - o = term_to_python(tobj, true, NULL, true); - if (!o) { - python_release_GIL(lim); - pyErrorAndReturn(false); - } - foreign_t rc = python_to_term(o, tf); - if (rc) - PyErr_Clear(); - python_release_GIL(lim); - pyErrorAndReturn(rc); -} - -static foreign_t python_proc(term_t tobj) { - PyObject *o; - - term_t lim = python_acquire_GIL(); - - o = term_to_python(tobj, true, NULL, true); - python_release_GIL(lim); - bool rc = o != NULL; - pyErrorAndReturn(rc); -} - -static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { - PyObject *pF, *pI; - - PyObject *p; - - // get Scope ... - pI = term_to_python(indx, true, NULL, true); - // got Scope.Exp - // get Scope ... - p = term_to_python(parent, true, NULL, true); - // Exp - if (!pI || !p) { - { pyErrorAndReturn(false); } - } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_DecRef(pI); - Py_DecRef(p); - Py_INCREF(pF); - { - foreign_t rc; - rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, - term_t tf) { - PyObject *pF; - PyObject *pArgs, *pKeywords; - PyObject *pValue; - int i, arity; - atom_t aname; - foreign_t out; - term_t targ = PL_new_term_ref(); - - pF = term_to_python(tin, true, NULL, true); - PyErr_Clear(); - if (pF == NULL) { - { pyErrorAndReturn(false); } - } - if (PL_is_atom(targs)) { - pArgs = NULL; - } else { - - if (!PL_get_name_arity(targs, &aname, &arity)) { - { pyErrorAndReturn(false); } - } - if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { - /* ignore (_) */ - pArgs = NULL; - } else { - - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - - if (!pArgs) { - pyErrorAndReturn(false); - } - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, targs, targ)) { - pyErrorAndReturn(false); - } - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - /* pArg reference stolen here: */ - PyTuple_SetItem(pArgs, i, pArg); - } - } - } - if (PL_is_atom(keywds)) { - pKeywords = NULL; - } else { - pKeywords = term_to_python(keywds, true, NULL, true); - } - if (PyCallable_Check(pF)) { - pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); - // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); - // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); - // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); - if (!pValue) - PyErr_Print(); - else - Py_IncRef(pValue); - } else if (pArgs == NULL) { - pValue = pF; - - if (pF) { - Py_IncRef(pValue); - } - } else { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - if (pArgs) - Py_DECREF(pArgs); - Py_DECREF(pF); - if (pValue == NULL) { - pyErrorAndReturn(false); - } - out = address_to_term(pValue, tf); - pyErrorAndReturn(out); -} - -static foreign_t assign_python(term_t exp, term_t name) { - term_t stackp = python_acquire_GIL(); - PyObject *e = term_to_python(exp, true, NULL, true); - - if (e == NULL) { - python_release_GIL(stackp); - pyErrorAndReturn(false); - } - bool b = python_assign(name, e, NULL); - python_release_GIL(stackp); - pyErrorAndReturn(b); -} - -static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { - PyErr_Clear(); - PyObject *pI, *pArgs, *pOut; - PyObject *env; - atom_t name; - char *s; - int i, arity; - term_t targ = PL_new_term_ref(); - - if ((env = py_Builtin) == NULL) { - // no point in even trying - { pyErrorAndReturn(false); } - } - if (PL_get_name_arity(caller, &name, &arity)) { - if (!(s = PL_atom_chars(name))) { - pyErrorAndReturn(false); - } - if ((pI = PyObject_GetAttrString(env, s)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_INCREF(pI); - } else { - // Prolog should make sure this never happens. - { pyErrorAndReturn(false); } - } - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, caller, targ)) { - pyErrorAndReturn(false); - } - /* ignore (_) */ - if (i == 0 && PL_is_variable(targ)) { - pArg = Py_None; - } else { - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - } - /* pArg reference stolen here: */ - if (PyTuple_SetItem(pArgs, i, pArg)) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - } - pOut = PyObject_CallObject(pI, pArgs); - Py_DECREF(pArgs); - Py_DECREF(pI); - if (pOut == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - { - foreign_t rc = address_to_term(pOut, out); - ; - pyErrorAndReturn(rc); - } -} - -static foreign_t python_access(term_t obj, term_t f, term_t out) { - PyErr_Clear(); - PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; - atom_t name; - char *s = NULL; - int i, arity; - term_t targ = PL_new_term_ref(); - - if (o == NULL) { - pyErrorAndReturn(false); - } - if (PL_is_atom(f)) { - if (!PL_get_atom_chars(f, &s)) { - pyErrorAndReturn(false); - } - if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - Py_INCREF(pValue); - { pyErrorAndReturn(python_to_term(pValue, out) ); } - } - if (!PL_get_name_arity(f, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - if (!s) { - pyErrorAndReturn(false); - } - if ((pF = PyObject_GetAttrString(o, s)) == NULL) { - DebugPrintf("Function %p\n", o); - PyErr_Print(); - { pyErrorAndReturn(false); } - } - pArgs = PyTuple_New(arity); - DebugPrintf("Tuple %p\n", pArgs); - for (i = 0; i < arity; i++) { - PyObject *pArg; - if (!PL_get_arg(i + 1, f, targ)) { - pyErrorAndReturn(false); - } - /* ignore (_) */ - if (i == 0 && PL_is_variable(targ)) { - pArgs = Py_None; - } - pArg = term_to_python(targ, true, NULL, true); - if (pArg == NULL) { - pyErrorAndReturn(false); - } - /* pArg reference stolen here: */ - PyTuple_SetItem(pArgs, i, pArg); - } - pValue = PyObject_CallObject(pF, pArgs); - Py_DECREF(pArgs); - Py_DECREF(pF); - if (pValue == NULL) { - { pyErrorAndReturn(false); } - } - { pyErrorAndReturn(python_to_term(pValue, out)); } -} - -static foreign_t python_field(term_t parent, term_t att, term_t tobj) { - PyObject *pF; - atom_t name; - char *s; - int arity; - - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } else { - PyObject *p; - - // got Scope.Exp - // get Scope ... - p = term_to_python(parent, true, NULL, true); - // Exp - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - if (arity == 1 && !strcmp(s, "()")) { - if (!PL_get_arg(1, att, att)) { - pyErrorAndReturn(false); - } - if (!PL_get_name_arity(att, &name, &arity)) { - { pyErrorAndReturn(false); } - } - s = PL_atom_chars(name); - } - if (!s || !p) { - { pyErrorAndReturn(false); } - } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { - PyErr_Clear(); - { pyErrorAndReturn(false); } - } - } - { - foreign_t rc; - rc = address_to_term(pF, tobj); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_main_module(term_t mod) { - { - foreign_t rc; - PyErr_Clear(); - rc = address_to_term(py_Main, mod); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_function(term_t tobj) { - PyErr_Clear(); - PyObject *obj = term_to_python(tobj, true, NULL, true); - foreign_t rc = PyFunction_Check(obj); - - pyErrorAndReturn(rc); -} - -foreign_t python_builtin(term_t out) { - { - foreign_t rc; - PyErr_Clear(); - rc = address_to_term(py_Builtin, out); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_run_file(term_t file) { - char *s; - size_t len; - char si[256]; - s = si; - PyErr_Clear(); - if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { -#if PY_MAJOR_VERSION < 3 - PyObject *PyFileObject = PyFile_FromString(si, "r"); - PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); -#else - FILE *f = fopen(s, "r"); - if (f == NULL) { - pyErrorAndReturn(false); - } - PyRun_SimpleFileEx(f, s, 1); -#endif - { - { pyErrorAndReturn(true); } - } - } - { pyErrorAndReturn(false); } -} - -extern PyThreadState *YAP_save; - -static foreign_t python_run_command(term_t cmd) { - char *s; - bool rc = false; - size_t len; - char si[256]; - - PyErr_Clear(); - s = si; - if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { - PyRun_SimpleString(s); - rc = true; - } - pyErrorAndReturn(rc); -} - -static foreign_t python_run_script(term_t cmd, term_t fun) { - char si[256], sf[256]; - size_t len = 255, len1 = 255; - PyObject *pName, *pModule, *pFunc; - PyObject *pArgs = NULL, *pValue; - char *s; - - PyErr_Clear(); - s = si; - if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && - (s = sf) != NULL && - PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { - -#if PY_MAJOR_VERSION < 3 - pName = PyString_FromString("rbm"); -#else - // asssumes UTF-8 - pName = PyUnicode_FromString("rbm"); -#endif - /* Error checking of pName left out */ - - pModule = PyImport_Import(pName); - PyErr_Clear(); - Py_DECREF(pName); - - if (pModule != NULL) { - pFunc = PyObject_GetAttrString(pModule, sf); - /* pFunc is a new reference */ - - if (pFunc && PyCallable_Check(pFunc)) { - pValue = PyObject_CallObject(pFunc, pArgs); - if (pValue != NULL) { - Py_DECREF(pValue); - } else { - Py_DECREF(pFunc); - Py_DECREF(pModule); - PyErr_Print(); - fprintf(stderr, "Call failed\n"); - { pyErrorAndReturn(false); } - } - } else { - pyErrorHandler(); - if (PyErr_Occurred()) - PyErr_Print(); - fprintf(stderr, "Cannot find function \"%s\"\n", sf); - } - Py_XDECREF(pFunc); - Py_DECREF(pModule); - } else { - PyErr_Print(); - { pyErrorAndReturn(false); } - } - { pyErrorAndReturn(true); } - } - { pyErrorAndReturn(false); } -} - -static foreign_t python_export(term_t t, term_t pl) { - foreign_t rc = false; - PyErr_Clear(); - if (PL_is_functor(t, FUNCTOR_pointer1)) { - void *ptr; - term_t targ = PL_new_term_ref(); - - if (!PL_get_arg(1, t, targ)) { - pyErrorAndReturn(false); - } - if (!PL_get_pointer(targ, &ptr)) { - pyErrorAndReturn(false); - } - Py_INCREF((PyObject *)ptr); - /* pyErrorAndReturn( __main__) */ - rc = python_to_term((PyObject *)ptr, pl); - } - pyErrorAndReturn(rc); -} - -/** - * @pred python_import(MName, Mod) - * Import a python module to the YAP environment. - * - * @param mname module name, either an atom or a sequence of atoms, - * eg os.sys - * @param mod the pointer to the Python object - * @return success? - */ -static int python_import(term_t mname, term_t mod) { - PyObject *pName; - bool do_as = false; - - term_t arg = PL_new_term_ref(); - char s0[MAXPATHLEN], *s = s0, *t; - functor_t f; - while (true) { - size_t len; - //PyErr_Clear(); - len = (MAXPATHLEN - 1) - (s - s0); - if (PL_is_pair(mname)) { - char *sa = NULL; - if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || - !PL_get_arg(2, mname, mname)) { - pyErrorAndReturn(false); - } - PL_get_atom_chars(arg, &sa); - strcpy(s, sa); - s += strlen(s); - *s++ = '.'; - s[0] = '\0'; - } else if (PL_get_functor(mname, &f) && f == FUNCTOR_as2 && PL_get_arg(2, mname,arg) && - PL_get_atom_chars(arg, &t)) { - do_as = true; - PL_get_arg(1, mname,mname); - } else if (!PL_get_nchars(mname, &len, &s, - CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { - pyErrorAndReturn(false); - } else { - break; - } - } - term_t t0 = python_acquire_GIL(); -#if PY_MAJOR_VERSION < 3 - pName = PyString_FromString(s0); -#else - pName = PyUnicode_FromString(s0); -#endif - if (pName == NULL) { - python_release_GIL(t0); - pyErrorAndReturn(false); - } - - PyObject *pModule = PyImport_Import(pName); - - Py_XDECREF(pName); - if (pModule == NULL) { - python_release_GIL(t0); - - pyErrorAndReturn(false); - } - { - foreign_t rc = address_to_term(pModule, mod); - - if (do_as && PyObject_SetAttrString(py_Main, t, pModule) <0) - return false; - python_release_GIL(t0); - pyErrorAndReturn(rc); - } -} - -static foreign_t python_to_rhs(term_t inp, term_t t) { - PyObject *pVal; - PyErr_Clear(); - pVal = term_to_python(inp, true, NULL, true); - if (pVal == NULL) - pyErrorAndReturn(false); - pyErrorAndReturn(address_to_term(pVal, t)); -} - -// static PyThreadState *_saveP = NULL; -static bool _threaded = true; - -/* -static YAP_Int - p_python_ensure(term_t ptr) - { - PyGILState_STATE _tState = PyGILState_Ensure(); - pyErrorAndReturn( PL_unify_int64(ptr), false); - } - -static YAP_Int - p_python_release(term_t ptr) - { - - PyGILState_STATE _tState; - PL_get_int64( ptr, &_tState); - PyGILState_Release( _tState ); - pyErrorAndReturn( true); - } -*/ - -int _locked = 0; -PyThreadState *tstate; - -static YAP_Int p_python_threaded(void) { - - PyErr_Clear(); - // PyEval_ReleaseThread(tstate); - // _threaded = true; - // _locked = 0; - pyErrorAndReturn(true); -} - -static PyGILState_STATE gstates[64]; -static int gstatei = 0; - -term_t python_acquire_GIL(void) { - term_t curSlot = PL_new_term_ref(); - // extern int Yap_do_low_level_trace; - // Yap_do_low_level_trace = 1; - // fprintf( stderr, "++%d\n", ++_locked); - // if (_locked > 0) { _locked++ ; } - // else - if (_threaded) { - gstates[gstatei] = PyGILState_Ensure(); - } - fprintf(stderr, "+%d\n", (int)gstatei); - PL_put_integer(curSlot, gstatei++); - return curSlot; -} - -bool python_release_GIL(term_t curBlock) { - int gstateix; - gstatei--; - PL_get_integer(curBlock, &gstateix); - PL_reset_term_refs(curBlock); - if (gstatei != gstateix) { - if (gstateix > gstatei) { - fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); - return false; - } else { - fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); - return false; - } - } - if (_threaded) { - PyGILState_Release(gstates[gstatei]); - } - pyErrorAndReturn(true); -} - - -install_t install_pypreds(void) { - PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); - PL_register_foreign("python_builtin", 1, python_builtin, 0); - PL_register_foreign("python_import", 2, python_import, 0); - PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); - PL_register_foreign("python_len", 2, python_len, 0); - PL_register_foreign("python_is", 2, python_is, 0); - PL_register_foreign("python_dir", 2, python_dir, 0); - PL_register_foreign("python_apply", 4, python_apply, 0); - PL_register_foreign("python_index", 3, python_index, 0); - PL_register_foreign("python_field", 3, python_field, 0); - PL_register_foreign("python_assign", 2, assign_python, 0); - PL_register_foreign("python_export", 2, python_export, 0); - PL_register_foreign("python_function", 1, python_function, 0); - PL_register_foreign("python_slice", 4, python_slice, 0); - PL_register_foreign("python_run_file", 1, python_run_file, 0); - PL_register_foreign("python_proc", 1, python_proc, 0); - PL_register_foreign("python_run_command", 1, python_run_command, 0); - PL_register_foreign("python_run_script", 2, python_run_script, 0); - PL_register_foreign("python_main_module", 1, python_main_module, 0); - PL_register_foreign("python_import", 2, python_import, 0); - PL_register_foreign("python_access", 3, python_access, 0); - PL_register_foreign("python_threaded", 0, p_python_threaded, 0); - - init_python_vfs(); -} + #include "py4yap.h" PyObject *py_Main; void pyErrorHandler__(int line, const char *file, const char *code) { // this code is called if a Python error is found. fprintf(stderr, " Python error detected at %s %s:%d\n\n", code, file, line); PyErr_Print(); } static foreign_t python_len(term_t tobj, term_t tf) { Py_ssize_t len; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } len = PyObject_Length(o); pyErrorAndReturn(PL_unify_int64(tf, len)); } static foreign_t python_dir(term_t tobj, term_t tf) { PyObject *dir; PyObject *o; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } dir = PyObject_Dir(o); { foreign_t rc = address_to_term(dir, tf); ; pyErrorAndReturn(rc); } } static foreign_t python_index(term_t tobj, term_t tindex, term_t val) { PyObject *i; PyObject *o; PyObject *f; o = term_to_python(tobj, true, NULL, true); if (o == NULL) { pyErrorAndReturn(false); } if (!PySequence_Check(o)) { pyErrorAndReturn(false); } i = term_to_python(tindex, true, NULL, true); if (i == NULL) { pyErrorAndReturn(false); } #if PY_MAJOR_VERSION < 3 f = PyObject_CallMethodObjArgs(o, PyString_FromString("getitem"), i); #else f = PyObject_CallMethodObjArgs(o, PyUnicode_FromString("getitem"), i); #endif { foreign_t rc = address_to_term(f, val); ; pyErrorAndReturn(rc); } } static foreign_t python_is(term_t tobj, term_t tf) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); if (!o) { python_release_GIL(lim); pyErrorAndReturn(false); } foreign_t rc = python_to_term(o, tf); if (rc) PyErr_Clear(); python_release_GIL(lim); pyErrorAndReturn(rc); } static foreign_t python_proc(term_t tobj) { PyObject *o; term_t lim = python_acquire_GIL(); o = term_to_python(tobj, true, NULL, true); python_release_GIL(lim); bool rc = o != NULL; pyErrorAndReturn(rc); } static foreign_t python_slice(term_t parent, term_t indx, term_t tobj) { PyObject *pF, *pI; PyObject *p; // get Scope ... pI = term_to_python(indx, true, NULL, true); // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!pI || !p) { { pyErrorAndReturn(false); } } else if ((pF = PySequence_GetSlice(p, 0, 0)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_DecRef(pI); Py_DecRef(p); Py_INCREF(pF); { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_apply(term_t tin, term_t targs, term_t keywds, term_t tf) { PyObject *pF; PyObject *pArgs, *pKeywords; PyObject *pValue; int i, arity; atom_t aname; foreign_t out; term_t targ = PL_new_term_ref(); pF = term_to_python(tin, true, NULL, true); PyErr_Clear(); if (pF == NULL) { { pyErrorAndReturn(false); } } if (PL_is_atom(targs)) { pArgs = NULL; } else { if (!PL_get_name_arity(targs, &aname, &arity)) { { pyErrorAndReturn(false); } } if (arity == 1 && PL_get_arg(1, targs, targ) && PL_is_variable(targ)) { /* ignore (_) */ pArgs = NULL; } else { pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); if (!pArgs) { pyErrorAndReturn(false); } for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, targs, targ)) { pyErrorAndReturn(false); } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } } } if (PL_is_atom(keywds)) { pKeywords = NULL; } else { pKeywords = term_to_python(keywds, true, NULL, true); } if (PyCallable_Check(pF)) { pValue = PyEval_CallObjectWithKeywords(pF, pArgs, pKeywords); // PyObject_Print(pF,stderr,0);fprintf(stderr, "\n"); // PyObject_Print(pArgs,stderr,0);fprintf(stderr, " "); // PyObject_Print(pKeywords,stderr,0);fprintf(stderr, "\n"); if (!pValue) PyErr_Print(); else Py_IncRef(pValue); } else if (pArgs == NULL) { pValue = pF; if (pF) { Py_IncRef(pValue); } } else { PyErr_Print(); { pyErrorAndReturn(false); } } if (pArgs) Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { pyErrorAndReturn(false); } out = address_to_term(pValue, tf); pyErrorAndReturn(out); } static foreign_t assign_python(term_t exp, term_t name) { term_t stackp = python_acquire_GIL(); PyObject *e = term_to_python(exp, true, NULL, true); if (e == NULL) { python_release_GIL(stackp); pyErrorAndReturn(false); } bool b = python_assign(name, e, NULL); python_release_GIL(stackp); pyErrorAndReturn(b); } static foreign_t python_builtin_eval(term_t caller, term_t dict, term_t out) { PyErr_Clear(); PyObject *pI, *pArgs, *pOut; PyObject *env; atom_t name; char *s; int i, arity; term_t targ = PL_new_term_ref(); if ((env = py_Builtin) == NULL) { // no point in even trying { pyErrorAndReturn(false); } } if (PL_get_name_arity(caller, &name, &arity)) { if (!(s = PL_atom_chars(name))) { pyErrorAndReturn(false); } if ((pI = PyObject_GetAttrString(env, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pI); } else { // Prolog should make sure this never happens. { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, caller, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArg = Py_None; } else { pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } } /* pArg reference stolen here: */ if (PyTuple_SetItem(pArgs, i, pArg)) { PyErr_Print(); { pyErrorAndReturn(false); } } } pOut = PyObject_CallObject(pI, pArgs); Py_DECREF(pArgs); Py_DECREF(pI); if (pOut == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } { foreign_t rc = address_to_term(pOut, out); ; pyErrorAndReturn(rc); } } static foreign_t python_access(term_t obj, term_t f, term_t out) { PyErr_Clear(); PyObject *o = term_to_python(obj, true, NULL, true), *pValue, *pArgs, *pF; atom_t name; char *s = NULL; int i, arity; term_t targ = PL_new_term_ref(); if (o == NULL) { pyErrorAndReturn(false); } if (PL_is_atom(f)) { if (!PL_get_atom_chars(f, &s)) { pyErrorAndReturn(false); } if ((pValue = PyObject_GetAttrString(o, s)) == NULL) { PyErr_Print(); { pyErrorAndReturn(false); } } Py_INCREF(pValue); { pyErrorAndReturn(python_to_term(pValue, out) ); } } if (!PL_get_name_arity(f, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (!s) { pyErrorAndReturn(false); } if ((pF = PyObject_GetAttrString(o, s)) == NULL) { DebugPrintf("Function %p\n", o); PyErr_Print(); { pyErrorAndReturn(false); } } pArgs = PyTuple_New(arity); DebugPrintf("Tuple %p\n", pArgs); for (i = 0; i < arity; i++) { PyObject *pArg; if (!PL_get_arg(i + 1, f, targ)) { pyErrorAndReturn(false); } /* ignore (_) */ if (i == 0 && PL_is_variable(targ)) { pArgs = Py_None; } pArg = term_to_python(targ, true, NULL, true); if (pArg == NULL) { pyErrorAndReturn(false); } /* pArg reference stolen here: */ PyTuple_SetItem(pArgs, i, pArg); } pValue = PyObject_CallObject(pF, pArgs); Py_DECREF(pArgs); Py_DECREF(pF); if (pValue == NULL) { { pyErrorAndReturn(false); } } { pyErrorAndReturn(python_to_term(pValue, out)); } } static foreign_t python_field(term_t parent, term_t att, term_t tobj) { PyObject *pF; atom_t name; char *s; int arity; if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } else { PyObject *p; // got Scope.Exp // get Scope ... p = term_to_python(parent, true, NULL, true); // Exp if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); if (arity == 1 && !strcmp(s, "()")) { if (!PL_get_arg(1, att, att)) { pyErrorAndReturn(false); } if (!PL_get_name_arity(att, &name, &arity)) { { pyErrorAndReturn(false); } } s = PL_atom_chars(name); } if (!s || !p) { { pyErrorAndReturn(false); } } else if ((pF = PyObject_GetAttrString(p, s)) == NULL) { PyErr_Clear(); { pyErrorAndReturn(false); } } } { foreign_t rc; rc = address_to_term(pF, tobj); pyErrorAndReturn(rc); } } static foreign_t python_main_module(term_t mod) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Main, mod); pyErrorAndReturn(rc); } } static foreign_t python_function(term_t tobj) { PyErr_Clear(); PyObject *obj = term_to_python(tobj, true, NULL, true); foreign_t rc = PyFunction_Check(obj); pyErrorAndReturn(rc); } foreign_t python_builtin(term_t out) { { foreign_t rc; PyErr_Clear(); rc = address_to_term(py_Builtin, out); pyErrorAndReturn(rc); } } static foreign_t python_run_file(term_t file) { char *s; size_t len; char si[256]; s = si; PyErr_Clear(); if (PL_get_nchars(file, &len, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 PyObject *PyFileObject = PyFile_FromString(si, "r"); PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), "test.py", 1); #else FILE *f = fopen(s, "r"); if (f == NULL) { pyErrorAndReturn(false); } PyRun_SimpleFileEx(f, s, 1); #endif { { pyErrorAndReturn(true); } } } { pyErrorAndReturn(false); } } extern PyThreadState *YAP_save; static foreign_t python_run_command(term_t cmd) { char *s; bool rc = false; size_t len; char si[256]; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION)) { PyRun_SimpleString(s); rc = true; } pyErrorAndReturn(rc); } static foreign_t python_run_script(term_t cmd, term_t fun) { char si[256], sf[256]; size_t len = 255, len1 = 255; PyObject *pName, *pModule, *pFunc; PyObject *pArgs = NULL, *pValue; char *s; PyErr_Clear(); s = si; if (PL_get_nchars(cmd, &len, &s, CVT_ALL | CVT_EXCEPTION) && (s = sf) != NULL && PL_get_nchars(fun, &len1, &s, CVT_ALL | CVT_EXCEPTION)) { #if PY_MAJOR_VERSION < 3 pName = PyString_FromString("rbm"); #else // asssumes UTF-8 pName = PyUnicode_FromString("rbm"); #endif /* Error checking of pName left out */ pModule = PyImport_Import(pName); PyErr_Clear(); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, sf); /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { pValue = PyObject_CallObject(pFunc, pArgs); if (pValue != NULL) { Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr, "Call failed\n"); { pyErrorAndReturn(false); } } } else { pyErrorHandler(); if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", sf); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); { pyErrorAndReturn(false); } } { pyErrorAndReturn(true); } } { pyErrorAndReturn(false); } } static foreign_t python_export(term_t t, term_t pl) { foreign_t rc = false; PyErr_Clear(); if (PL_is_functor(t, FUNCTOR_pointer1)) { void *ptr; term_t targ = PL_new_term_ref(); if (!PL_get_arg(1, t, targ)) { pyErrorAndReturn(false); } if (!PL_get_pointer(targ, &ptr)) { pyErrorAndReturn(false); } Py_INCREF((PyObject *)ptr); /* pyErrorAndReturn( __main__) */ rc = python_to_term((PyObject *)ptr, pl); } pyErrorAndReturn(rc); } /** * @pred python_import(MName, Mod) * Import a python module to the YAP environment. * * @param mname module name, either an atom or a sequence of atoms, * eg os.sys * @param mod the pointer to the Python object * @return success? */ static int python_import(term_t mname, term_t mod) { PyObject *pName; bool do_as = false; term_t arg = PL_new_term_ref(); char s0[MAXPATHLEN], *s = s0, *t; functor_t f; while (true) { size_t len; //PyErr_Clear(); len = (MAXPATHLEN - 1) - (s - s0); if (PL_is_pair(mname)) { char *sa = NULL; if (!PL_get_arg(1, mname, arg) || !PL_get_atom_chars(arg, &sa) || !PL_get_arg(2, mname, mname)) { pyErrorAndReturn(false); } PL_get_atom_chars(arg, &sa); strcpy(s, sa); s += strlen(s); *s++ = '.'; s[0] = '\0'; } else if (PL_get_functor(mname, &f) && f == FUNCTOR_as2 && PL_get_arg(2, mname,arg) && PL_get_atom_chars(arg, &t)) { do_as = true; PL_get_arg(1, mname,mname); } else if (!PL_get_nchars(mname, &len, &s, CVT_ATOM | CVT_EXCEPTION | REP_UTF8)) { pyErrorAndReturn(false); } else { break; } } term_t t0 = python_acquire_GIL(); #if PY_MAJOR_VERSION < 3 pName = PyString_FromString(s0); #else pName = PyUnicode_FromString(s0); #endif if (pName == NULL) { python_release_GIL(t0); pyErrorAndReturn(false); } PyObject *pModule = PyImport_Import(pName); Py_XDECREF(pName); if (pModule == NULL) { python_release_GIL(t0); pyErrorAndReturn(false); } { foreign_t rc = address_to_term(pModule, mod); if (do_as && PyObject_SetAttrString(py_Main, t, pModule) <0) return false; python_release_GIL(t0); pyErrorAndReturn(rc); } } static foreign_t python_to_rhs(term_t inp, term_t t) { PyObject *pVal; PyErr_Clear(); pVal = term_to_python(inp, true, NULL, true); if (pVal == NULL) pyErrorAndReturn(false); pyErrorAndReturn(address_to_term(pVal, t)); } // static PyThreadState *_saveP = NULL; static bool _threaded = true; /* static YAP_Int p_python_ensure(term_t ptr) { PyGILState_STATE _tState = PyGILState_Ensure(); pyErrorAndReturn( PL_unify_int64(ptr), false); } static YAP_Int p_python_release(term_t ptr) { PyGILState_STATE _tState; PL_get_int64( ptr, &_tState); PyGILState_Release( _tState ); pyErrorAndReturn( true); } */ int _locked = 0; PyThreadState *tstate; static YAP_Int p_python_threaded(void) { PyErr_Clear(); // PyEval_ReleaseThread(tstate); // _threaded = true; // _locked = 0; pyErrorAndReturn(true); } static PyGILState_STATE gstates[64]; static int gstatei = 0; term_t python_acquire_GIL(void) { term_t curSlot = PL_new_term_ref(); // extern int Yap_do_low_level_trace; // Yap_do_low_level_trace = 1; // fprintf( stderr, "++%d\n", ++_locked); // if (_locked > 0) { _locked++ ; } // else if (_threaded) { gstates[gstatei] = PyGILState_Ensure(); } PL_put_integer(curSlot, gstatei++); return curSlot; } bool python_release_GIL(term_t curBlock) { int gstateix; gstatei--; PL_get_integer(curBlock, &gstateix); PL_reset_term_refs(curBlock); if (gstatei != gstateix) { if (gstateix > gstatei) { fprintf(stderr, "gstateix(%d) > gstatei(%d)\n", gstateix, gstatei); return false; } else { fprintf(stderr, "gstateix(%d) < gstatei(%d)\n", gstateix, gstatei); return false; } } if (_threaded) { PyGILState_Release(gstates[gstatei]); } pyErrorAndReturn(true); } install_t install_pypreds(void) { PL_register_foreign("python_builtin_eval", 3, python_builtin_eval, 0); PL_register_foreign("python_builtin", 1, python_builtin, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_to_rhs", 2, python_to_rhs, 0); PL_register_foreign("python_len", 2, python_len, 0); PL_register_foreign("python_is", 2, python_is, 0); PL_register_foreign("python_dir", 2, python_dir, 0); PL_register_foreign("python_apply", 4, python_apply, 0); PL_register_foreign("python_index", 3, python_index, 0); PL_register_foreign("python_field", 3, python_field, 0); PL_register_foreign("python_assign", 2, assign_python, 0); PL_register_foreign("python_export", 2, python_export, 0); PL_register_foreign("python_function", 1, python_function, 0); PL_register_foreign("python_slice", 4, python_slice, 0); PL_register_foreign("python_run_file", 1, python_run_file, 0); PL_register_foreign("python_proc", 1, python_proc, 0); PL_register_foreign("python_run_command", 1, python_run_command, 0); PL_register_foreign("python_run_script", 2, python_run_script, 0); PL_register_foreign("python_main_module", 1, python_main_module, 0); PL_register_foreign("python_import", 2, python_import, 0); PL_register_foreign("python_access", 3, python_access, 0); PL_register_foreign("python_threaded", 0, p_python_threaded, 0); init_python_vfs(); } \ No newline at end of file From 9b86a7869bd953ad2a11ab0aada8dafd39fae734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 22 Mar 2018 07:18:07 +0000 Subject: [PATCH 16/99] fix typo --- pl/qly.yap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pl/qly.yap b/pl/qly.yap index 679760178..0756e9dd9 100755 --- a/pl/qly.yap +++ b/pl/qly.yap @@ -240,7 +240,7 @@ qend_program :- X \= argv, X \= os_argv, X \= language, - X \= encoding. + X \= encoding, fail. qsave_file(F0) :- From 56e676ef65e57a63b220c8597449f27b771748b7 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 23 Mar 2018 18:48:16 +0000 Subject: [PATCH 17/99] undef --- C/absmi.c | 71 ++++++++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/C/absmi.c b/C/absmi.c index 1c33eabdc..4a4158363 100755 --- a/C/absmi.c +++ b/C/absmi.c @@ -916,9 +916,7 @@ static int interrupt_dexecute(USES_REGS1) { static void undef_goal(USES_REGS1) { PredEntry *pe = PredFromDefCode(P); - CELL *b; - CELL *b0; - + BEGD(d0); /* avoid trouble with undefined dynamic procedures */ /* I assume they were not locked beforehand */ @@ -928,6 +926,15 @@ static void undef_goal(USES_REGS1) { PP = pe; } #endif + if (pe->PredFlags & (DynamicPredFlag | LogUpdatePredFlag | MultiFileFlag) ) { +#if defined(YAPOR) || defined(THREADS) + UNLOCKPE(19, PP); + PP = NULL; +#endif + CalculateStackGap(PASS_REGS1); + P = FAILCODE; + return; + } if (UndefCode == NULL || UndefCode->OpcodeOfPred == UNDEF_OPCODE) { fprintf(stderr,"call to undefined Predicates %s ->", IndicatorOfPred(pe)); Yap_DebugPlWriteln(ARG1); @@ -937,15 +944,6 @@ static void undef_goal(USES_REGS1) { #if defined(YAPOR) || defined(THREADS) UNLOCKPE(19, PP); PP = NULL; -#endif - CalculateStackGap(PASS_REGS1); - P = FAILCODE; - return; - } - if (pe->PredFlags & (DynamicPredFlag | LogUpdatePredFlag | MultiFileFlag) ) { -#if defined(YAPOR) || defined(THREADS) - UNLOCKPE(19, PP); - PP = NULL; #endif CalculateStackGap(PASS_REGS1); P = FAILCODE; @@ -955,27 +953,16 @@ static void undef_goal(USES_REGS1) { UNLOCKPE(19, PP); PP = NULL; #endif - d0 = pe->ArityOfPE; - if (pe->ModuleOfPred == PROLOG_MODULE) { - if (CurrentModule == PROLOG_MODULE) - HR[0] = MkAtomTerm(Yap_LookupAtom("prolog")); - else - HR[0] = CurrentModule; + if (pe->ArityOfPE == 0) { + d0 = MkAtomTerm((Atom)(pe->FunctorOfPred)); } else { - HR[0] = Yap_Module_Name(pe); - } - b = b0 = HR; - HR += 2; - if (d0 == 0) { - b[1] = MkAtomTerm((Atom)(pe->FunctorOfPred)); - } else { - b[1] = AbsAppl(b+2); + d0 = AbsAppl(HR); *HR++ = (CELL)pe->FunctorOfPred; - b += 3; - HR += d0; + CELL *ip=HR, *imax = HR+pe->ArityOfPE; + HR = imax; BEGP(pt1); pt1 = XREGS + 1; - for (; d0 > 0; --d0) { + for (; ip < imax; ip++) { BEGD(d1); BEGP(pt0); pt0 = pt1++; @@ -983,18 +970,17 @@ static void undef_goal(USES_REGS1) { deref_head(d1, undef_unk); undef_nonvar: /* just copy it to the heap */ - *b++ = d1; + *ip = d1; continue; derefa_body(d1, pt0, undef_unk, undef_nonvar); if (pt0 <= HR) { /* variable is safe */ - *b++ = (CELL)pt0; + *ip = (CELL)pt0; } else { /* bind it, in case it is a local variable */ - d1 = Unsigned(HR); - RESET_VARIABLE(HR); - HR += 1; + d1 = Unsigned(ip); + RESET_VARIABLE(ip); Bind_Local(pt0, d1); } ENDP(pt0); @@ -1002,9 +988,20 @@ static void undef_goal(USES_REGS1) { } ENDP(pt1); } - ENDD(d0); - ARG1 = AbsPair(b0); - ARG2 = Yap_getUnknownModule(Yap_GetModuleEntry(b0[0])); + ARG1 = AbsPair(HR); + HR[1] = d0; +ENDD(d0); + if (pe->ModuleOfPred == PROLOG_MODULE) { + if (CurrentModule == PROLOG_MODULE) + HR[0] = TermProlog; + else + HR[0] = CurrentModule; + } else { + HR[0] = Yap_Module_Name(pe); + } + ARG2 = Yap_getUnknownModule(Yap_GetModuleEntry(HR[0])); + HR += 2; + #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) low_level_trace(enter_pred, UndefCode, XREGS + 1); From 13cdd5124aaa0504174ee542bdf0e923dea1ad1d Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 23 Mar 2018 18:48:48 +0000 Subject: [PATCH 18/99] typo --- pl/qly.yap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pl/qly.yap b/pl/qly.yap index 679760178..31b669095 100755 --- a/pl/qly.yap +++ b/pl/qly.yap @@ -240,7 +240,7 @@ qend_program :- X \= argv, X \= os_argv, X \= language, - X \= encoding. + X \= encoding, fail. qsave_file(F0) :- From 7e0611b5265f61dccf1dceea3333f32e13d56e72 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 23 Mar 2018 19:17:20 +0000 Subject: [PATCH 19/99] fix typo (by Paulo Moura) --- packages/jpl/jpl.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jpl/jpl.pl b/packages/jpl/jpl.pl index 89c9488b4..1ccfaa932 100644 --- a/packages/jpl/jpl.pl +++ b/packages/jpl/jpl.pl @@ -4506,7 +4506,7 @@ location(java_root, _, JRE) :- member(Root, [ '/usr/lib', '/usr/local/lib', '/opt/lib', - '/Library/Java/JavaVirtual hines', + '/Library/Java/JavaVirtualMachines', '/System/Library/Frameworks' ]), exists_directory(Root), From 4dfad0a7fec4b78c7b07cbaf4df3fe0936b178d0 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sat, 24 Mar 2018 22:55:32 +0000 Subject: [PATCH 20/99] ninja --- configure | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/configure b/configure index 284cb35a4..5962f82d6 100755 --- a/configure +++ b/configure @@ -291,12 +291,10 @@ while [ $# != 0 ]; do "--docdir") CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "$2")"; shift;; - "-G=|--generator="*) - GENERATOR="$CMAKE_ARGS -G $(1#*=)";; - + "-G="|"--generator="*) + CMAKE_ARGS+="-G"${1#*=};; "-G"|"--generator") - GENERATOR="$CMAKE_ARGS -G$(quote "$2")"; - shift;; + CMAKE_ARGS+="-G$"$2; shift;; "CC="*) CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$(quote "${1#*=}")";; From 0b67a66533dbc1a8d6b84ec217afdfe9c515a05c Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sat, 24 Mar 2018 22:56:21 +0000 Subject: [PATCH 21/99] fix dlls --- packages/bdd/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/bdd/CMakeLists.txt b/packages/bdd/CMakeLists.txt index 88b7de0b5..d748929ef 100644 --- a/packages/bdd/CMakeLists.txt +++ b/packages/bdd/CMakeLists.txt @@ -1,4 +1,3 @@ -CMAKE_MINIMUM_REQUIRED ( VERSION 2.8 ) PROJECT ( YAP_BDD C ) From e02884a94f37871fd2d44cfedd3e9ef9f28f0464 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sat, 24 Mar 2018 22:56:52 +0000 Subject: [PATCH 22/99] error handling --- CXX/yapi.cpp | 15 +++---- packages/python/swig/yap4py/yapi.py | 65 +++++++++++++++-------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index 85b6e6fb3..0802b719d 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -437,6 +437,7 @@ bool YAPEngine::call(YAPPredicate ap, YAPTerm ts[]) { LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { std::cerr << "Restart\n"; + throw *new YAPError(); //q.e = new YAPError(); } // don't forget, on success these bindings will still be there); @@ -490,7 +491,7 @@ bool YAPEngine::mgoal(Term t, Term tmod) { if (sigsetjmp(*LOCAL_RestartEnv, false)) { // PyEval_RestoreThread(_save); std::cerr << "Restart\n"; - //throw new YAPError(); + throw *new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); @@ -567,10 +568,7 @@ Term YAPEngine::fun(Term t) { sigjmp_buf buf, *oldp = LOCAL_RestartEnv; LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - // throw new YAPError(); - LOCAL_RestartEnv = oldp; - RECOVER_MACHINE_REGS(); - return 0; + throw *new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); @@ -693,7 +691,7 @@ bool YAPQuery::next() { return false; LOCAL_RestartEnv = &buf; if (sigsetjmp(*LOCAL_RestartEnv, false)) { - //e = new YAPError(); + throw *new YAPError(); } // don't forget, on success these guys may create slots __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exec "); @@ -712,10 +710,9 @@ bool YAPQuery::next() { } q_state = 1; if ((terr = Yap_PeekException())) { - LOCAL_RestartEnv = &buf; + throw * new YAPError(); - result = false; - } + } __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "out %d", result); if (!result) { diff --git a/packages/python/swig/yap4py/yapi.py b/packages/python/swig/yap4py/yapi.py index a26d3b007..56ba37a59 100644 --- a/packages/python/swig/yap4py/yapi.py +++ b/packages/python/swig/yap4py/yapi.py @@ -144,38 +144,41 @@ class YAPShell: # if not isinstance(eq[0],str): # print( "Error: Variable Name matches a Python Symbol") # return - self.do_ask = True - engine = self.engine - bindings = [] - g = python_query(self, query) - if not self.q: - self.q = Query( engine, g ) - for bind in self.q: - bindings += [bind] - if self.do_ask: - print(bindings) - bindings = [] + try: + engine = self.engine + bindings = [] + loop = False + g = python_query(self, query) + if not self.q: + self.q = Query( engine, g ) + for bind in self.q: + bindings += [bind] + if loop: + continue + if not self.q: + break s = input("more(;), all(*), no(\\n), python(#) ?").lstrip() - else: - s = ";" - if s.startswith(';') or s.startswith('y'): - continue - elif s.startswith('#'): - try: - exec(s.lstrip('#')) - except: - raise - elif s.startswith('*') or s.startswith('a'): - self.do_ask = False - continue - else: - break - if self.q: - self.os = query - if bindings: - return True,bindings - print("No (more) answers") - return False, None + if s.startswith(';') or s.startswith('y'): + continue + elif s.startswith('#'): + try: + exec(s.lstrip('#')) + except: + raise + elif s.startswith('*') or s.startswith('a'): + loop = True + continue + else: + break + if self.q: + self.os = query + if bindings: + return True,bindings + print("No (more) answers") + return False, None + except e: + print("Exception") + print(e) def live(self, engine, **kwargs): From 51fa95505fdbbd711c0f9ebac7d011f86b8402c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Mon, 26 Mar 2018 11:05:22 +0100 Subject: [PATCH 23/99] merge --- pl/qly.yap | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pl/qly.yap b/pl/qly.yap index fa968c51d..31b669095 100755 --- a/pl/qly.yap +++ b/pl/qly.yap @@ -240,11 +240,7 @@ qend_program :- X \= argv, X \= os_argv, X \= language, -<<<<<<< HEAD - X \= encoding, -======= X \= encoding, ->>>>>>> e02884a94f37871fd2d44cfedd3e9ef9f28f0464 fail. qsave_file(F0) :- From 3da111bd10e1c4da8923a1aa2bcbab55b13a5153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Mon, 26 Mar 2018 15:01:21 +0100 Subject: [PATCH 24/99] errors --- C/errors.c | 10 +++++++++- C/yap-args.c | 2 +- os/assets.c | 9 +++++---- os/iopreds.c | 8 ++++---- os/streams.c | 2 +- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/C/errors.c b/C/errors.c index 4e425f652..ff38d4c78 100755 --- a/C/errors.c +++ b/C/errors.c @@ -333,6 +333,14 @@ void Yap_pushErrorContext(yap_error_descriptor_t *new_error) { LOCAL_ActiveError = new_error; } +static void +reset_error_description(void) { + sigjmp_buf *bf = LOCAL_ActiveError->top_error; + memset(LOCAL_ActiveError, 0, sizeof(*LOCAL_ActiveError)); + LOCAL_ActiveError->top_error = bf; + +} + yap_error_descriptor_t *Yap_popErrorContext(bool pass) { if (pass && LOCAL_ActiveError->top_error->errorNo == YAP_NO_ERROR && LOCAL_ActiveError->errorNo != YAP_NO_ERROR) @@ -361,6 +369,7 @@ void Yap_ThrowError__(const char *file, const char *function, int lineno, } else { Yap_Error__(file, function, lineno, type, where); } + if (LOCAL_RestartEnv) siglongjmp(*LOCAL_RestartEnv, 5); } @@ -474,7 +483,6 @@ yamop *Yap_Error__(const char *file, const char *function, int lineno, } va_end(ap); if (P == (yamop *)(FAILCODE)) { - memset(LOCAL_ActiveError, 0, sizeof(*LOCAL_ActiveError)); LOCAL_PrologMode &= ~InErrorMode; return P; } diff --git a/C/yap-args.c b/C/yap-args.c index 6dd760562..e8abf0ca2 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -315,7 +315,7 @@ static void Yap_set_locations(YAP_init_args *iap) { /// BOOTPLDIR: where we can find Prolog bootstrap files Yap_BOOTSTRAP = sel(true, iap->BOOTSTRAP != NULL, iap->BOOTSTRAP, true, #if __ANDROID__ - "/assets/Yap/pl/boot,yap", + "/assets/Yap/pl/boot.yap", #else join(getenv("DESTDIR"), YAP_BOOTSTRAP), #endif diff --git a/os/assets.c b/os/assets.c index 0ab9adede..1af044b79 100644 --- a/os/assets.c +++ b/os/assets.c @@ -60,15 +60,15 @@ Java_pt_up_yap_yapdroid_YAPDroid_loadAssetManager(JNIEnv *env, jclass clazz, job static void * -open_asset(VFS_t *me, int sno, const char *fname, const char *io_mode) { +open_asset(VFS_t *me, const char *fname, const char *io_mode, int sno) { int mode; const void *buf; AAsset *am = NULL; - __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "open %s <%s>", fname, io_mode); - if (strchr(io_mode, 'B')) + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "open %s-%s <%s>", fname, me->prefix,io_mode); + if (strchr(io_mode, 'B')) { mode = AASSET_MODE_BUFFER; - else { + } else {[lib] mode = AASSET_MODE_UNKNOWN; } GLOBAL_Stream[sno].name = Yap_LookupAtom(fname); @@ -78,6 +78,7 @@ open_asset(VFS_t *me, int sno, const char *fname, const char *io_mode) { // strcpy(dir, fname); // char *d = basename(dir); am = AAssetManager_open(Yap_assetManager(), fname, mode); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "open %s <%s>", fname, io_mode ); // while (dp) { // char *f = AAssetDir_getNextFileName(dp); // __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "open %s <%s>", f, d); diff --git a/os/iopreds.c b/os/iopreds.c index c5e69f6f1..798e0bc15 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -337,7 +337,7 @@ void Yap_DefaultStreamOps(StreamDesc *st) { st->stream_wputc = put_wchar; st->stream_wgetc = get_wchar; - if (st->vfs) { + if (st->vfs && !st->file) { st->stream_putc = st->vfs->put_char; st->stream_wputc = st->vfs->put_char; st->stream_getc = st->vfs->get_char; @@ -1143,7 +1143,7 @@ bool Yap_initStream(int sno, FILE *fd, const char *name, const char *io_mode, Te st->status = Binary_Stream_f|flags; } - st->vfs = vfs; + //st->vfs = vfs; st->buf.on = false; st->charcount = 0; st->linecount = 1; @@ -1598,7 +1598,7 @@ int Yap_OpenStream(const char *fname, const char* io_mode, Term user_name, encod // read, write, append user_name = st->user_name; } else { - fd = fopen(fname, io_mode); + st->file = fopen(fname, io_mode); if (fd == NULL) { if (!strchr(io_mode, 'b') && binary_file(fname)) { UNLOCK(st->streamlock); @@ -1615,7 +1615,7 @@ int Yap_OpenStream(const char *fname, const char* io_mode, Term user_name, encod return -1; } } - Yap_initStream(sno, fd, fname, io_mode, user_name, LOCAL_encoding, flags, vfsp); + Yap_initStream(sno, st->file, fname, io_mode, user_name, LOCAL_encoding, flags, vfsp); __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "exists %s <%d>", fname, sno); return sno; diff --git a/os/streams.c b/os/streams.c index d3ff1f91d..f5b62dd6b 100644 --- a/os/streams.c +++ b/os/streams.c @@ -984,7 +984,7 @@ static void CloseStream(int sno) { //fflush(NULL); VFS_t *me; - if ((me = GLOBAL_Stream[sno].vfs) != NULL) { + if ((me = GLOBAL_Stream[sno].vfs) != NULL && GLOBAL_Stream[sno].file == NULL) { if (me->close) { me->close(sno); } From e3ac349a0dc37b10ed4c266d6c142f36049b9205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Mon, 26 Mar 2018 23:12:48 +0100 Subject: [PATCH 25/99] droid --- os/assets.c | 2 +- packages/myddas/pl/myddas_driver.ypp | 2 +- packages/myddas/pl/myddas_errors.ypp | 9 +- packages/myddas/pl/myddas_util_predicates.ypp | 4 +- packages/myddas/sqlite3/myddas_sqlite3.c | 25 +- .../sqlite3/src/Android/AndroidManifest.xml | 15 - .../myddas/sqlite3/src/Android/ant.properties | 17 - packages/myddas/sqlite3/src/Android/build.xml | 92 - .../myddas/sqlite3/src/Android/jni/Android.mk | 4 - .../sqlite3/src/Android/jni/Application.mk | 1 - .../src/Android/jni/sqlite/ALog-priv.h | 76 - .../sqlite3/src/Android/jni/sqlite/Android.mk | 44 - .../src/Android/jni/sqlite/JNIHelp.cpp | 341 --- .../src/Android/jni/sqlite/JniConstants.cpp | 139 -- .../sqlite3/src/Android/jni/sqlite/README | 40 - .../sqlite/android_database_SQLiteCommon.cpp | 138 -- .../sqlite/android_database_SQLiteCommon.h | 55 - .../android_database_SQLiteConnection.cpp | 1013 -------- .../sqlite/android_database_SQLiteDebug.cpp | 92 - .../sqlite/android_database_SQLiteGlobal.cpp | 99 - .../Android/jni/sqlite/nativehelper/JNIHelp.h | 191 -- .../jni/sqlite/nativehelper/JniConstants.h | 99 - .../jni/sqlite/nativehelper/ScopedLocalRef.h | 63 - .../src/Android/jni/sqlite/nativehelper/jni.h | 1141 --------- .../sqlite3/src/Android/local.properties | 10 - .../sqlite3/src/Android/proguard-project.txt | 20 - .../sqlite3/src/Android/project.properties | 14 - .../Android/res/drawable-hdpi/ic_launcher.png | Bin 9397 -> 0 bytes .../Android/res/drawable-ldpi/ic_launcher.png | Bin 2729 -> 0 bytes .../Android/res/drawable-mdpi/ic_launcher.png | Bin 5237 -> 0 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 14383 -> 0 bytes .../sqlite3/src/Android/res/layout/main.xml | 36 - .../src/Android/res/values/strings.xml | 4 - .../sqlite/app/customsqlite/CustomSqlite.java | 416 ---- .../sqlite/database/DatabaseErrorHandler.java | 37 - .../database/DefaultDatabaseErrorHandler.java | 117 - .../src/org/sqlite/database/ExtraUtils.java | 176 -- .../src/org/sqlite/database/SQLException.java | 37 - .../sqlite/database/sqlite/CloseGuard.java | 235 -- .../DatabaseObjectNotClosedException.java | 35 - .../database/sqlite/SQLiteAbortException.java | 34 - .../sqlite/SQLiteAccessPermException.java | 33 - ...eBindOrColumnIndexOutOfRangeException.java | 32 - .../sqlite/SQLiteBlobTooBigException.java | 29 - .../SQLiteCantOpenDatabaseException.java | 29 - .../database/sqlite/SQLiteClosable.java | 112 - .../database/sqlite/SQLiteConnection.java | 1516 ----------- .../database/sqlite/SQLiteConnectionPool.java | 1091 -------- .../sqlite/SQLiteConstraintException.java | 32 - .../sqlite/database/sqlite/SQLiteCursor.java | 318 --- .../database/sqlite/SQLiteCursorDriver.java | 60 - .../database/sqlite/SQLiteCustomFunction.java | 57 - .../database/sqlite/SQLiteDatabase.java | 2206 ----------------- .../sqlite/SQLiteDatabaseConfiguration.java | 169 -- .../SQLiteDatabaseCorruptException.java | 32 - .../sqlite/SQLiteDatabaseLockedException.java | 37 - .../SQLiteDatatypeMismatchException.java | 29 - .../sqlite/database/sqlite/SQLiteDebug.java | 176 -- .../sqlite/SQLiteDirectCursorDriver.java | 87 - .../sqlite/SQLiteDiskIOException.java | 33 - .../database/sqlite/SQLiteDoneException.java | 35 - .../database/sqlite/SQLiteException.java | 39 - .../database/sqlite/SQLiteFullException.java | 32 - .../sqlite/database/sqlite/SQLiteGlobal.java | 117 - .../sqlite/SQLiteMisuseException.java | 41 - .../database/sqlite/SQLiteOpenHelper.java | 383 --- .../sqlite/SQLiteOutOfMemoryException.java | 29 - .../sqlite/database/sqlite/SQLiteProgram.java | 222 -- .../sqlite/database/sqlite/SQLiteQuery.java | 88 - .../database/sqlite/SQLiteQueryBuilder.java | 663 ----- .../SQLiteReadOnlyDatabaseException.java | 29 - .../sqlite/database/sqlite/SQLiteSession.java | 967 -------- .../database/sqlite/SQLiteStatement.java | 167 -- .../database/sqlite/SQLiteStatementInfo.java | 43 - .../sqlite/SQLiteTableLockedException.java | 29 - .../sqlite/SQLiteTransactionListener.java | 41 - .../sqlite/database/sqlite/SqliteWrapper.java | 111 - .../myddas/sqlite3/src/Android/www/index.wiki | 215 -- packages/swig/python/yap.egg-info/PKG-INFO | 10 - packages/swig/python/yap.egg-info/SOURCES.txt | 14 - .../python/yap.egg-info/dependency_links.txt | 1 - .../swig/python/yap.egg-info/top_level.txt | 2 - packages/swig/python/yapex.egg-info/PKG-INFO | 10 - .../swig/python/yapex.egg-info/SOURCES.txt | 12 - .../yapex.egg-info/dependency_links.txt | 1 - .../swig/python/yapex.egg-info/top_level.txt | 1 - 86 files changed, 24 insertions(+), 14229 deletions(-) delete mode 100644 packages/myddas/sqlite3/src/Android/AndroidManifest.xml delete mode 100644 packages/myddas/sqlite3/src/Android/ant.properties delete mode 100644 packages/myddas/sqlite3/src/Android/build.xml delete mode 100644 packages/myddas/sqlite3/src/Android/jni/Android.mk delete mode 100644 packages/myddas/sqlite3/src/Android/jni/Application.mk delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/ALog-priv.h delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/Android.mk delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/JNIHelp.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/JniConstants.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/README delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.h delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteConnection.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteDebug.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteGlobal.cpp delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JNIHelp.h delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JniConstants.h delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/ScopedLocalRef.h delete mode 100644 packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/jni.h delete mode 100644 packages/myddas/sqlite3/src/Android/local.properties delete mode 100644 packages/myddas/sqlite3/src/Android/proguard-project.txt delete mode 100644 packages/myddas/sqlite3/src/Android/project.properties delete mode 100644 packages/myddas/sqlite3/src/Android/res/drawable-hdpi/ic_launcher.png delete mode 100644 packages/myddas/sqlite3/src/Android/res/drawable-ldpi/ic_launcher.png delete mode 100644 packages/myddas/sqlite3/src/Android/res/drawable-mdpi/ic_launcher.png delete mode 100644 packages/myddas/sqlite3/src/Android/res/drawable-xhdpi/ic_launcher.png delete mode 100644 packages/myddas/sqlite3/src/Android/res/layout/main.xml delete mode 100644 packages/myddas/sqlite3/src/Android/res/values/strings.xml delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/app/customsqlite/CustomSqlite.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/DatabaseErrorHandler.java delete mode 100755 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/DefaultDatabaseErrorHandler.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/ExtraUtils.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/SQLException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/CloseGuard.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/DatabaseObjectNotClosedException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteAbortException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteAccessPermException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteBlobTooBigException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteCantOpenDatabaseException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteClosable.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteConnection.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteConnectionPool.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteConstraintException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteCursor.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteCursorDriver.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteCustomFunction.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDatabase.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDatabaseConfiguration.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDatabaseCorruptException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDatabaseLockedException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDatatypeMismatchException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDebug.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDirectCursorDriver.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDiskIOException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteDoneException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteFullException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteGlobal.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteMisuseException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteOpenHelper.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteOutOfMemoryException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteProgram.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteQuery.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteQueryBuilder.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteReadOnlyDatabaseException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteSession.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteStatement.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteStatementInfo.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteTableLockedException.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SQLiteTransactionListener.java delete mode 100644 packages/myddas/sqlite3/src/Android/src/org/sqlite/database/sqlite/SqliteWrapper.java delete mode 100644 packages/myddas/sqlite3/src/Android/www/index.wiki delete mode 100644 packages/swig/python/yap.egg-info/PKG-INFO delete mode 100644 packages/swig/python/yap.egg-info/SOURCES.txt delete mode 100644 packages/swig/python/yap.egg-info/dependency_links.txt delete mode 100644 packages/swig/python/yap.egg-info/top_level.txt delete mode 100644 packages/swig/python/yapex.egg-info/PKG-INFO delete mode 100644 packages/swig/python/yapex.egg-info/SOURCES.txt delete mode 100644 packages/swig/python/yapex.egg-info/dependency_links.txt delete mode 100644 packages/swig/python/yapex.egg-info/top_level.txt diff --git a/os/assets.c b/os/assets.c index 1af044b79..0da26ffa5 100644 --- a/os/assets.c +++ b/os/assets.c @@ -68,7 +68,7 @@ open_asset(VFS_t *me, const char *fname, const char *io_mode, int sno) { __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "open %s-%s <%s>", fname, me->prefix,io_mode); if (strchr(io_mode, 'B')) { mode = AASSET_MODE_BUFFER; - } else {[lib] + } else { mode = AASSET_MODE_UNKNOWN; } GLOBAL_Stream[sno].name = Yap_LookupAtom(fname); diff --git a/packages/myddas/pl/myddas_driver.ypp b/packages/myddas/pl/myddas_driver.ypp index ab14beeca..332b495ec 100644 --- a/packages/myddas/pl/myddas_driver.ypp +++ b/packages/myddas/pl/myddas_driver.ypp @@ -182,7 +182,7 @@ DBMS(show_databases)(Connection,database(Databases)) :- DBMS(result_set)(Mode), '$write_or_not'('SHOW DATABASES'), c_DBMS(query)('SHOW DATABASES',ResultSet,Conn,Mode,_), - !,c_DBMS(row)(ResultSet,1,[Databases]). + !,DBMS(row)(ResultSet,1,[Databases]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/packages/myddas/pl/myddas_errors.ypp b/packages/myddas/pl/myddas_errors.ypp index a6799e92e..6818a708f 100644 --- a/packages/myddas/pl/myddas_errors.ypp +++ b/packages/myddas/pl/myddas_errors.ypp @@ -174,6 +174,7 @@ nonvar(Module). % Prevent the error of given an atom that has no value '$error_checks'(get_value(Connection,Con)) :- !, +writeln(user_error,get_value(Connection,Con)), % This also prevents the case of giving the number of the connection % as an argument atom(Connection), @@ -181,11 +182,3 @@ get_value(Connection,Value), Value \== []. -% Prevent the error of given an atom that has no value -'$error_checks'(get_value(Conn,Connection)) :- !, - % This also prevents the case of giving the number of the connection - % as an argument - atom(Conn), - var(Connection), - get_value(Conn,Value), - Value \== []. diff --git a/packages/myddas/pl/myddas_util_predicates.ypp b/packages/myddas/pl/myddas_util_predicates.ypp index 03836c73c..f144c0020 100644 --- a/packages/myddas/pl/myddas_util_predicates.ypp +++ b/packages/myddas/pl/myddas_util_predicates.ypp @@ -393,14 +393,14 @@ % Only for making the error tests in all of the calls to % get_value/2 '$get_value'(Connection,Con) :- - '$error_checks'(get_value(Connection,Con)), + %'$error_checks'(get_value(Connection,Con)), get_value(Connection,Con). '$check_fields'([],[]). '$check_fields'(['$const$'(_)|TAtt],[_|TFields]):- '$check_fields'(TAtt,TFields). -% um campo auto_incrementavel, é sempre parte da chave, e como é auto +% um campo auto_incrementavel, � sempre parte da chave, e como � auto % pode-se dar valores NULOS '$check_fields'([att(_,Name)|TAtt],[property(Name,_,1,1)|TFields]):-!, '$check_fields'(TAtt,TFields). diff --git a/packages/myddas/sqlite3/myddas_sqlite3.c b/packages/myddas/sqlite3/myddas_sqlite3.c index 9d0ff72b4..38ee0d178 100644 --- a/packages/myddas/sqlite3/myddas_sqlite3.c +++ b/packages/myddas/sqlite3/myddas_sqlite3.c @@ -77,7 +77,6 @@ static Int c_sqlite3_get_database(USES_REGS1); static Int c_sqlite3_change_database(USES_REGS1); static Int c_sqlite3_connect(USES_REGS1) { - printf("hello darkness\n"); Term arg_file = Deref(ARG1); Term arg_db = ARG4; @@ -85,11 +84,13 @@ static Int c_sqlite3_connect(USES_REGS1) { sqlite3 *db; const char *file = AtomName(AtomOfTerm(arg_file)); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "connect sqlite3 %s",file); CALL_SQLITE(ARG1, open(file, &db)); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "connect sqlite3 %p",db); if (!Yap_unify(arg_db, MkAddressTerm(db))) { - return FALSE; + return false; } else { /* Criar um novo no na lista de ligacoes*/ new = myddas_util_add_connection(db, NULL, API_SQLITE3); @@ -98,9 +99,9 @@ static Int c_sqlite3_connect(USES_REGS1) { #ifdef DEBUG fprintf(stderr, "ERROR: ** c_db_my_connect ** Error allocating memory\n"); #endif - return FALSE; + return false; } - return TRUE; + return true; } } @@ -276,6 +277,7 @@ static Int c_sqlite3_number_of_fields(USES_REGS1) { const char *relation = AtomName(AtomOfTerm(arg_relation)); sqlite3 *db = AddressOfTerm(arg_db); sqlite3_stmt *stmt; + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", " sqlite3 relation %s",relation); char sql[256]; @@ -288,7 +290,11 @@ static Int c_sqlite3_number_of_fields(USES_REGS1) { CALL_SQLITE(ARG1, finalize(stmt)); - return Yap_unify(arg_fields, MkIntegerTerm(fields)); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", " sqlite3 fields %d",fields); + + + + return Yap_unify(arg_fields, MkIntegerTerm(fields)); } /* db_get_attributes_types: RelName x connection -> TypesList */ @@ -301,6 +307,7 @@ static Int c_sqlite3_get_attributes_types(USES_REGS1) { sqlite3 *db = (sqlite3 *)IntegerOfTerm(arg_db); char sql[256]; int row; + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", " sqlite3 reelation %s get_attributes",relation); sqlite3_stmt *stmt; @@ -341,7 +348,8 @@ static Int c_sqlite3_get_attributes_types(USES_REGS1) { tm = "?"; break; } - list = Yap_MkNewPairTerm(); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", " sqlite3 attributes %s:%s ",sqlite3_column_name(stmt, row),tm); + list = Yap_MkNewPairTerm(); *tfp = list; RepPair(list)[0] = MkAtomTerm(Yap_LookupAtom(tm)); tfp = RepPair(list) + 1; @@ -664,9 +672,14 @@ static void Yap_InitBackMYDDAS_SQLITE3Preds(void) { } X_API void init_sqlite3(void) { + Term cm = CurrentModule; + CurrentModule = MkAtomTerm(Yap_LookupAtom("myddas_sqlite3")); + Yap_InitMYDDAS_SQLITE3Preds(); Yap_InitBackMYDDAS_SQLITE3Preds(); + + CurrentModule = cm; } diff --git a/packages/myddas/sqlite3/src/Android/AndroidManifest.xml b/packages/myddas/sqlite3/src/Android/AndroidManifest.xml deleted file mode 100644 index 31bf961a2..000000000 --- a/packages/myddas/sqlite3/src/Android/AndroidManifest.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/packages/myddas/sqlite3/src/Android/ant.properties b/packages/myddas/sqlite3/src/Android/ant.properties deleted file mode 100644 index b0971e891..000000000 --- a/packages/myddas/sqlite3/src/Android/ant.properties +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked into Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - diff --git a/packages/myddas/sqlite3/src/Android/build.xml b/packages/myddas/sqlite3/src/Android/build.xml deleted file mode 100644 index d88d541a4..000000000 --- a/packages/myddas/sqlite3/src/Android/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/myddas/sqlite3/src/Android/jni/Android.mk b/packages/myddas/sqlite3/src/Android/jni/Android.mk deleted file mode 100644 index e372509cb..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/Android.mk +++ /dev/null @@ -1,4 +0,0 @@ - -LOCAL_PATH:= $(call my-dir) -include $(LOCAL_PATH)/sqlite/Android.mk - diff --git a/packages/myddas/sqlite3/src/Android/jni/Application.mk b/packages/myddas/sqlite3/src/Android/jni/Application.mk deleted file mode 100644 index fe0d98a35..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/Application.mk +++ /dev/null @@ -1 +0,0 @@ -APP_STL:=stlport_static diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/ALog-priv.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/ALog-priv.h deleted file mode 100644 index 30d7e7826..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/ALog-priv.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#ifndef NATIVEHELPER_ALOGPRIV_H_ -#define NATIVEHELPER_ALOGPRIV_H_ - -#include - -#ifndef LOG_NDEBUG -#ifdef NDEBUG -#define LOG_NDEBUG 1 -#else -#define LOG_NDEBUG 0 -#endif -#endif - - -/* - * Basic log message macros intended to emulate the behavior of log/log.h - * in system core. This should be dependent only on ndk exposed logging - * functionality. - */ - -#ifndef ALOG -#define ALOG(priority, tag, fmt...) \ - __android_log_print(ANDROID_##priority, tag, fmt) -#endif - -#ifndef ALOGV -#if LOG_NDEBUG -#define ALOGV(...) ((void)0) -#else -#define ALOGV(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) -#endif -#endif - -#ifndef ALOGD -#define ALOGD(...) ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) -#endif - -#ifndef ALOGI -#define ALOGI(...) ((void)ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) -#endif - -#ifndef ALOGW -#define ALOGW(...) ((void)ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) -#endif - -#ifndef ALOGE -#define ALOGE(...) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) -#endif - -/* -** Not quite the same as the core android LOG_FATAL_IF (which also -** sends a SIGTRAP), but close enough. -*/ -#define LOG_FATAL_IF(bCond, zErr) if( bCond ) ALOGE(zErr); - -#endif diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/Android.mk b/packages/myddas/sqlite3/src/Android/jni/sqlite/Android.mk deleted file mode 100644 index 0c508b902..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/Android.mk +++ /dev/null @@ -1,44 +0,0 @@ - -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -# If using SEE, uncomment the following: -# LOCAL_CFLAGS += -DSQLITE_HAS_CODEC - -# This is important - it causes SQLite to use memory for temp files. Since -# Android has no globally writable temp directory, if this is not defined the -# application throws an exception when it tries to create a temp file. -# -LOCAL_CFLAGS += -DSQLITE_TEMP_STORE=3 - -LOCAL_CFLAGS += -DHAVE_CONFIG_H -DKHTML_NO_EXCEPTIONS -DGKWQ_NO_JAVA -LOCAL_CFLAGS += -DNO_SUPPORT_JS_BINDING -DQT_NO_WHEELEVENT -DKHTML_NO_XBL -LOCAL_CFLAGS += -U__APPLE__ -LOCAL_CFLAGS += -DHAVE_STRCHRNUL=0 -LOCAL_CFLAGS += -Wno-unused-parameter -Wno-int-to-pointer-cast -LOCAL_CFLAGS += -Wno-maybe-uninitialized -Wno-parentheses -LOCAL_CPPFLAGS += -Wno-conversion-null - - -ifeq ($(TARGET_ARCH), arm) - LOCAL_CFLAGS += -DPACKED="__attribute__ ((packed))" -else - LOCAL_CFLAGS += -DPACKED="" -endif - -LOCAL_SRC_FILES:= \ - android_database_SQLiteCommon.cpp \ - android_database_SQLiteConnection.cpp \ - android_database_SQLiteGlobal.cpp \ - android_database_SQLiteDebug.cpp \ - JNIHelp.cpp JniConstants.cpp - -LOCAL_SRC_FILES += sqlite3.c - -LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/nativehelper/ - -LOCAL_MODULE:= libsqliteX -LOCAL_LDLIBS += -ldl -llog - -include $(BUILD_SHARED_LIBRARY) - diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/JNIHelp.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/JNIHelp.cpp deleted file mode 100644 index 54ac77abc..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/JNIHelp.cpp +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "JNIHelp" - -#include "JniConstants.h" -#include "JNIHelp.h" -#include "ALog-priv.h" - -#include -#include -#include -#include - -#include - -/** - * Equivalent to ScopedLocalRef, but for C_JNIEnv instead. (And slightly more powerful.) - */ -template -class scoped_local_ref { -public: - scoped_local_ref(C_JNIEnv* env, T localRef = NULL) - : mEnv(env), mLocalRef(localRef) - { - } - - ~scoped_local_ref() { - reset(); - } - - void reset(T localRef = NULL) { - if (mLocalRef != NULL) { - (*mEnv)->DeleteLocalRef(reinterpret_cast(mEnv), mLocalRef); - mLocalRef = localRef; - } - } - - T get() const { - return mLocalRef; - } - -private: - C_JNIEnv* mEnv; - T mLocalRef; - - // Disallow copy and assignment. - scoped_local_ref(const scoped_local_ref&); - void operator=(const scoped_local_ref&); -}; - -static jclass findClass(C_JNIEnv* env, const char* className) { - JNIEnv* e = reinterpret_cast(env); - return (*env)->FindClass(e, className); -} - -extern "C" int jniRegisterNativeMethods(C_JNIEnv* env, const char* className, - const JNINativeMethod* gMethods, int numMethods) -{ - JNIEnv* e = reinterpret_cast(env); - - ALOGV("Registering %s's %d native methods...", className, numMethods); - - scoped_local_ref c(env, findClass(env, className)); - if (c.get() == NULL) { - char* msg; - asprintf(&msg, "Native registration unable to find class '%s'; aborting...", className); - e->FatalError(msg); - } - - if ((*env)->RegisterNatives(e, c.get(), gMethods, numMethods) < 0) { - char* msg; - asprintf(&msg, "RegisterNatives failed for '%s'; aborting...", className); - e->FatalError(msg); - } - - return 0; -} - -/* - * Returns a human-readable summary of an exception object. The buffer will - * be populated with the "binary" class name and, if present, the - * exception message. - */ -static bool getExceptionSummary(C_JNIEnv* env, jthrowable exception, std::string& result) { - JNIEnv* e = reinterpret_cast(env); - - /* get the name of the exception's class */ - scoped_local_ref exceptionClass(env, (*env)->GetObjectClass(e, exception)); // can't fail - scoped_local_ref classClass(env, - (*env)->GetObjectClass(e, exceptionClass.get())); // java.lang.Class, can't fail - jmethodID classGetNameMethod = - (*env)->GetMethodID(e, classClass.get(), "getName", "()Ljava/lang/String;"); - scoped_local_ref classNameStr(env, - (jstring) (*env)->CallObjectMethod(e, exceptionClass.get(), classGetNameMethod)); - if (classNameStr.get() == NULL) { - (*env)->ExceptionClear(e); - result = ""; - return false; - } - const char* classNameChars = (*env)->GetStringUTFChars(e, classNameStr.get(), NULL); - if (classNameChars == NULL) { - (*env)->ExceptionClear(e); - result = ""; - return false; - } - result += classNameChars; - (*env)->ReleaseStringUTFChars(e, classNameStr.get(), classNameChars); - - /* if the exception has a detail message, get that */ - jmethodID getMessage = - (*env)->GetMethodID(e, exceptionClass.get(), "getMessage", "()Ljava/lang/String;"); - scoped_local_ref messageStr(env, - (jstring) (*env)->CallObjectMethod(e, exception, getMessage)); - if (messageStr.get() == NULL) { - return true; - } - - result += ": "; - - const char* messageChars = (*env)->GetStringUTFChars(e, messageStr.get(), NULL); - if (messageChars != NULL) { - result += messageChars; - (*env)->ReleaseStringUTFChars(e, messageStr.get(), messageChars); - } else { - result += ""; - (*env)->ExceptionClear(e); // clear OOM - } - - return true; -} - -/* - * Returns an exception (with stack trace) as a string. - */ -static bool getStackTrace(C_JNIEnv* env, jthrowable exception, std::string& result) { - JNIEnv* e = reinterpret_cast(env); - - scoped_local_ref stringWriterClass(env, findClass(env, "java/io/StringWriter")); - if (stringWriterClass.get() == NULL) { - return false; - } - - jmethodID stringWriterCtor = (*env)->GetMethodID(e, stringWriterClass.get(), "", "()V"); - jmethodID stringWriterToStringMethod = - (*env)->GetMethodID(e, stringWriterClass.get(), "toString", "()Ljava/lang/String;"); - - scoped_local_ref printWriterClass(env, findClass(env, "java/io/PrintWriter")); - if (printWriterClass.get() == NULL) { - return false; - } - - jmethodID printWriterCtor = - (*env)->GetMethodID(e, printWriterClass.get(), "", "(Ljava/io/Writer;)V"); - - scoped_local_ref stringWriter(env, - (*env)->NewObject(e, stringWriterClass.get(), stringWriterCtor)); - if (stringWriter.get() == NULL) { - return false; - } - - jobject printWriter = - (*env)->NewObject(e, printWriterClass.get(), printWriterCtor, stringWriter.get()); - if (printWriter == NULL) { - return false; - } - - scoped_local_ref exceptionClass(env, (*env)->GetObjectClass(e, exception)); // can't fail - jmethodID printStackTraceMethod = - (*env)->GetMethodID(e, exceptionClass.get(), "printStackTrace", "(Ljava/io/PrintWriter;)V"); - (*env)->CallVoidMethod(e, exception, printStackTraceMethod, printWriter); - - if ((*env)->ExceptionCheck(e)) { - return false; - } - - scoped_local_ref messageStr(env, - (jstring) (*env)->CallObjectMethod(e, stringWriter.get(), stringWriterToStringMethod)); - if (messageStr.get() == NULL) { - return false; - } - - const char* utfChars = (*env)->GetStringUTFChars(e, messageStr.get(), NULL); - if (utfChars == NULL) { - return false; - } - - result = utfChars; - - (*env)->ReleaseStringUTFChars(e, messageStr.get(), utfChars); - return true; -} - -extern "C" int jniThrowException(C_JNIEnv* env, const char* className, const char* msg) { - JNIEnv* e = reinterpret_cast(env); - - if ((*env)->ExceptionCheck(e)) { - /* TODO: consider creating the new exception with this as "cause" */ - scoped_local_ref exception(env, (*env)->ExceptionOccurred(e)); - (*env)->ExceptionClear(e); - - if (exception.get() != NULL) { - std::string text; - getExceptionSummary(env, exception.get(), text); - ALOGW("Discarding pending exception (%s) to throw %s", text.c_str(), className); - } - } - - scoped_local_ref exceptionClass(env, findClass(env, className)); - if (exceptionClass.get() == NULL) { - ALOGE("Unable to find exception class %s", className); - /* ClassNotFoundException now pending */ - return -1; - } - - if ((*env)->ThrowNew(e, exceptionClass.get(), msg) != JNI_OK) { - ALOGE("Failed throwing '%s' '%s'", className, msg); - /* an exception, most likely OOM, will now be pending */ - return -1; - } - - return 0; -} - -int jniThrowExceptionFmt(C_JNIEnv* env, const char* className, const char* fmt, va_list args) { - char msgBuf[512]; - vsnprintf(msgBuf, sizeof(msgBuf), fmt, args); - return jniThrowException(env, className, msgBuf); -} - -int jniThrowNullPointerException(C_JNIEnv* env, const char* msg) { - return jniThrowException(env, "java/lang/NullPointerException", msg); -} - -int jniThrowRuntimeException(C_JNIEnv* env, const char* msg) { - return jniThrowException(env, "java/lang/RuntimeException", msg); -} - -int jniThrowIOException(C_JNIEnv* env, int errnum) { - char buffer[80]; - const char* message = jniStrError(errnum, buffer, sizeof(buffer)); - return jniThrowException(env, "java/io/IOException", message); -} - -static std::string jniGetStackTrace(C_JNIEnv* env, jthrowable exception) { - JNIEnv* e = reinterpret_cast(env); - - scoped_local_ref currentException(env, (*env)->ExceptionOccurred(e)); - if (exception == NULL) { - exception = currentException.get(); - if (exception == NULL) { - return ""; - } - } - - if (currentException.get() != NULL) { - (*env)->ExceptionClear(e); - } - - std::string trace; - if (!getStackTrace(env, exception, trace)) { - (*env)->ExceptionClear(e); - getExceptionSummary(env, exception, trace); - } - - if (currentException.get() != NULL) { - (*env)->Throw(e, currentException.get()); // rethrow - } - - return trace; -} - -void jniLogException(C_JNIEnv* env, int priority, const char* tag, jthrowable exception) { - std::string trace(jniGetStackTrace(env, exception)); - __android_log_write(priority, tag, trace.c_str()); -} - -const char* jniStrError(int errnum, char* buf, size_t buflen) { -#if __GLIBC__ - // Note: glibc has a nonstandard strerror_r that returns char* rather than POSIX's int. - // char *strerror_r(int errnum, char *buf, size_t n); - return strerror_r(errnum, buf, buflen); -#else - char *rc = strerror_r(errnum, buf, buflen); - if (rc != NULL) { - // (POSIX only guarantees a value other than 0. The safest - // way to implement this function is to use C++ and overload on the - // type of strerror_r to accurately distinguish GNU from POSIX.) - snprintf(buf, buflen, "errno %d", errnum); - } - return buf; -#endif -} - -jobject jniCreateFileDescriptor(C_JNIEnv* env, int fd) { - JNIEnv* e = reinterpret_cast(env); - static jmethodID ctor = e->GetMethodID(JniConstants::fileDescriptorClass, "", "()V"); - jobject fileDescriptor = (*env)->NewObject(e, JniConstants::fileDescriptorClass, ctor); - // NOTE: NewObject ensures that an OutOfMemoryError will be seen by the Java - // caller if the alloc fails, so we just return NULL when that happens. - if (fileDescriptor != NULL) { - jniSetFileDescriptorOfFD(env, fileDescriptor, fd); - } - return fileDescriptor; -} - -int jniGetFDFromFileDescriptor(C_JNIEnv* env, jobject fileDescriptor) { - JNIEnv* e = reinterpret_cast(env); - static jfieldID fid = e->GetFieldID(JniConstants::fileDescriptorClass, "descriptor", "I"); - if (fileDescriptor != NULL) { - return (*env)->GetIntField(e, fileDescriptor, fid); - } else { - return -1; - } -} - -void jniSetFileDescriptorOfFD(C_JNIEnv* env, jobject fileDescriptor, int value) { - JNIEnv* e = reinterpret_cast(env); - static jfieldID fid = e->GetFieldID(JniConstants::fileDescriptorClass, "descriptor", "I"); - (*env)->SetIntField(e, fileDescriptor, fid, value); -} - -jobject jniGetReferent(C_JNIEnv* env, jobject ref) { - JNIEnv* e = reinterpret_cast(env); - static jmethodID get = e->GetMethodID(JniConstants::referenceClass, "get", "()Ljava/lang/Object;"); - return (*env)->CallObjectMethod(e, ref, get); -} - diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/JniConstants.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/JniConstants.cpp deleted file mode 100644 index d6ac62d7b..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/JniConstants.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "JniConstants" - -#include "ALog-priv.h" -#include "JniConstants.h" -#include "ScopedLocalRef.h" - -#include - -jclass JniConstants::bidiRunClass; -jclass JniConstants::bigDecimalClass; -jclass JniConstants::booleanClass; -jclass JniConstants::byteArrayClass; -jclass JniConstants::byteClass; -jclass JniConstants::calendarClass; -jclass JniConstants::characterClass; -jclass JniConstants::charsetICUClass; -jclass JniConstants::constructorClass; -jclass JniConstants::deflaterClass; -jclass JniConstants::doubleClass; -jclass JniConstants::errnoExceptionClass; -jclass JniConstants::fieldClass; -jclass JniConstants::fieldPositionIteratorClass; -jclass JniConstants::fileDescriptorClass; -jclass JniConstants::floatClass; -jclass JniConstants::gaiExceptionClass; -jclass JniConstants::inet6AddressClass; -jclass JniConstants::inetAddressClass; -jclass JniConstants::inetSocketAddressClass; -jclass JniConstants::inetUnixAddressClass; -jclass JniConstants::inflaterClass; -jclass JniConstants::inputStreamClass; -jclass JniConstants::integerClass; -jclass JniConstants::localeDataClass; -jclass JniConstants::longClass; -jclass JniConstants::methodClass; -jclass JniConstants::mutableIntClass; -jclass JniConstants::mutableLongClass; -jclass JniConstants::objectClass; -jclass JniConstants::objectArrayClass; -jclass JniConstants::outputStreamClass; -jclass JniConstants::parsePositionClass; -jclass JniConstants::patternSyntaxExceptionClass; -jclass JniConstants::realToStringClass; -jclass JniConstants::referenceClass; -jclass JniConstants::shortClass; -jclass JniConstants::socketClass; -jclass JniConstants::socketImplClass; -jclass JniConstants::stringClass; -jclass JniConstants::structAddrinfoClass; -jclass JniConstants::structFlockClass; -jclass JniConstants::structGroupReqClass; -jclass JniConstants::structLingerClass; -jclass JniConstants::structPasswdClass; -jclass JniConstants::structPollfdClass; -jclass JniConstants::structStatClass; -jclass JniConstants::structStatVfsClass; -jclass JniConstants::structTimevalClass; -jclass JniConstants::structUcredClass; -jclass JniConstants::structUtsnameClass; - -static jclass findClass(JNIEnv* env, const char* name) { - ScopedLocalRef localClass(env, env->FindClass(name)); - jclass result = reinterpret_cast(env->NewGlobalRef(localClass.get())); - if (result == NULL) { - ALOGE("failed to find class '%s'", name); - abort(); - } - return result; -} - -void JniConstants::init(JNIEnv* env) { - bidiRunClass = findClass(env, "java/text/Bidi$Run"); - bigDecimalClass = findClass(env, "java/math/BigDecimal"); - booleanClass = findClass(env, "java/lang/Boolean"); - byteClass = findClass(env, "java/lang/Byte"); - byteArrayClass = findClass(env, "[B"); - calendarClass = findClass(env, "java/util/Calendar"); - characterClass = findClass(env, "java/lang/Character"); - charsetICUClass = findClass(env, "java/nio/charset/CharsetICU"); - constructorClass = findClass(env, "java/lang/reflect/Constructor"); - floatClass = findClass(env, "java/lang/Float"); - deflaterClass = findClass(env, "java/util/zip/Deflater"); - doubleClass = findClass(env, "java/lang/Double"); - errnoExceptionClass = findClass(env, "libcore/io/ErrnoException"); - fieldClass = findClass(env, "java/lang/reflect/Field"); - fieldPositionIteratorClass = findClass(env, "libcore/icu/NativeDecimalFormat$FieldPositionIterator"); - fileDescriptorClass = findClass(env, "java/io/FileDescriptor"); - gaiExceptionClass = findClass(env, "libcore/io/GaiException"); - inet6AddressClass = findClass(env, "java/net/Inet6Address"); - inetAddressClass = findClass(env, "java/net/InetAddress"); - inetSocketAddressClass = findClass(env, "java/net/InetSocketAddress"); - inetUnixAddressClass = findClass(env, "java/net/InetUnixAddress"); - inflaterClass = findClass(env, "java/util/zip/Inflater"); - inputStreamClass = findClass(env, "java/io/InputStream"); - integerClass = findClass(env, "java/lang/Integer"); - localeDataClass = findClass(env, "libcore/icu/LocaleData"); - longClass = findClass(env, "java/lang/Long"); - methodClass = findClass(env, "java/lang/reflect/Method"); - mutableIntClass = findClass(env, "libcore/util/MutableInt"); - mutableLongClass = findClass(env, "libcore/util/MutableLong"); - objectClass = findClass(env, "java/lang/Object"); - objectArrayClass = findClass(env, "[Ljava/lang/Object;"); - outputStreamClass = findClass(env, "java/io/OutputStream"); - parsePositionClass = findClass(env, "java/text/ParsePosition"); - patternSyntaxExceptionClass = findClass(env, "java/util/regex/PatternSyntaxException"); - realToStringClass = findClass(env, "java/lang/RealToString"); - referenceClass = findClass(env, "java/lang/ref/Reference"); - shortClass = findClass(env, "java/lang/Short"); - socketClass = findClass(env, "java/net/Socket"); - socketImplClass = findClass(env, "java/net/SocketImpl"); - stringClass = findClass(env, "java/lang/String"); - structAddrinfoClass = findClass(env, "libcore/io/StructAddrinfo"); - structFlockClass = findClass(env, "libcore/io/StructFlock"); - structGroupReqClass = findClass(env, "libcore/io/StructGroupReq"); - structLingerClass = findClass(env, "libcore/io/StructLinger"); - structPasswdClass = findClass(env, "libcore/io/StructPasswd"); - structPollfdClass = findClass(env, "libcore/io/StructPollfd"); - structStatClass = findClass(env, "libcore/io/StructStat"); - structStatVfsClass = findClass(env, "libcore/io/StructStatVfs"); - structTimevalClass = findClass(env, "libcore/io/StructTimeval"); - structUcredClass = findClass(env, "libcore/io/StructUcred"); - structUtsnameClass = findClass(env, "libcore/io/StructUtsname"); -} diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/README b/packages/myddas/sqlite3/src/Android/jni/sqlite/README deleted file mode 100644 index f59344938..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/README +++ /dev/null @@ -1,40 +0,0 @@ - -All the files in this directory are copied from stock android. The following -files: - -JniConstants.cpp -JNIHelp.cpp -ALog-priv.h - -are copied in from Android's libnativehelper module (altogether less than 1000 -lines of code). The remainder are from the core framework (directory -/frameworks/base/core/jni). - -Notes on changes: - -The ashmem_XXX() interfaces are used for the various "xxxForBlobDescriptor()" -API functions. The code in libcutils for this seems to be platform -dependent - some platforms have kernel support, others have a user space -implementation. So these functions are not supported for now. - -The original SQLiteConnection.cpp uses AndroidRuntime::genJNIEnv() to obtain a -pointer to the current threads environment. Changed to store a pointer to the -process JavaVM (Android allows only one) as a global variable. Then retrieve -the JNIEnv as needed using GetEnv(). - -Replaced uses of class String8 with std::string in SQLiteConnection.cpp and a -few other places. - -The stock Android code to populate CursorWindow containers with the results of -a SELECT statement uses a C++ interface that is not available to NDK builds. So -this code is rewritten to call the CursorWindow java interface via JNI methods. -This is the largest source code change. See function -nativeExecuteForCursorWindow() in file android_database_SQLiteConnection.cpp -for details. - -The "LOCALIZED" collation and some miscellaneous user-functions added by the -sqlite3_android.cpp module are not included. A collation called LOCALIZED -that is equivalent to BINARY is added instead to keep various things working. -This should not cause serious problems - class SQLiteConnection always -runs "REINDEX LOCALIZED" immediately after opening a connection. - diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.cpp deleted file mode 100644 index c371acda9..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#include "android_database_SQLiteCommon.h" - -namespace android { - -/* throw a SQLiteException with a message appropriate for the error in handle */ -void throw_sqlite3_exception(JNIEnv* env, sqlite3* handle) { - throw_sqlite3_exception(env, handle, NULL); -} - -/* throw a SQLiteException with the given message */ -void throw_sqlite3_exception(JNIEnv* env, const char* message) { - throw_sqlite3_exception(env, NULL, message); -} - -/* throw a SQLiteException with a message appropriate for the error in handle - concatenated with the given message - */ -void throw_sqlite3_exception(JNIEnv* env, sqlite3* handle, const char* message) { - if (handle) { - // get the error code and message from the SQLite connection - // the error message may contain more information than the error code - // because it is based on the extended error code rather than the simplified - // error code that SQLite normally returns. - throw_sqlite3_exception(env, sqlite3_extended_errcode(handle), - sqlite3_errmsg(handle), message); - } else { - // we use SQLITE_OK so that a generic SQLiteException is thrown; - // any code not specified in the switch statement below would do. - throw_sqlite3_exception(env, SQLITE_OK, "unknown error", message); - } -} - -/* throw a SQLiteException for a given error code - * should only be used when the database connection is not available because the - * error information will not be quite as rich */ -void throw_sqlite3_exception_errcode(JNIEnv* env, int errcode, const char* message) { - throw_sqlite3_exception(env, errcode, "unknown error", message); -} - -/* throw a SQLiteException for a given error code, sqlite3message, and - user message - */ -void throw_sqlite3_exception(JNIEnv* env, int errcode, - const char* sqlite3Message, const char* message) { - const char* exceptionClass; - switch (errcode & 0xff) { /* mask off extended error code */ - case SQLITE_IOERR: - exceptionClass = "org/sqlite/database/sqlite/SQLiteDiskIOException"; - break; - case SQLITE_CORRUPT: - case SQLITE_NOTADB: // treat "unsupported file format" error as corruption also - exceptionClass = "org/sqlite/database/sqlite/SQLiteDatabaseCorruptException"; - break; - case SQLITE_CONSTRAINT: - exceptionClass = "org/sqlite/database/sqlite/SQLiteConstraintException"; - break; - case SQLITE_ABORT: - exceptionClass = "org/sqlite/database/sqlite/SQLiteAbortException"; - break; - case SQLITE_DONE: - exceptionClass = "org/sqlite/database/sqlite/SQLiteDoneException"; - sqlite3Message = NULL; // SQLite error message is irrelevant in this case - break; - case SQLITE_FULL: - exceptionClass = "org/sqlite/database/sqlite/SQLiteFullException"; - break; - case SQLITE_MISUSE: - exceptionClass = "org/sqlite/database/sqlite/SQLiteMisuseException"; - break; - case SQLITE_PERM: - exceptionClass = "org/sqlite/database/sqlite/SQLiteAccessPermException"; - break; - case SQLITE_BUSY: - exceptionClass = "org/sqlite/database/sqlite/SQLiteDatabaseLockedException"; - break; - case SQLITE_LOCKED: - exceptionClass = "org/sqlite/database/sqlite/SQLiteTableLockedException"; - break; - case SQLITE_READONLY: - exceptionClass = "org/sqlite/database/sqlite/SQLiteReadOnlyDatabaseException"; - break; - case SQLITE_CANTOPEN: - exceptionClass = "org/sqlite/database/sqlite/SQLiteCantOpenDatabaseException"; - break; - case SQLITE_TOOBIG: - exceptionClass = "org/sqlite/database/sqlite/SQLiteBlobTooBigException"; - break; - case SQLITE_RANGE: - exceptionClass = "org/sqlite/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException"; - break; - case SQLITE_NOMEM: - exceptionClass = "org/sqlite/database/sqlite/SQLiteOutOfMemoryException"; - break; - case SQLITE_MISMATCH: - exceptionClass = "org/sqlite/database/sqlite/SQLiteDatatypeMismatchException"; - break; - case SQLITE_INTERRUPT: - exceptionClass = "android/os/OperationCanceledException"; - break; - default: - exceptionClass = "org/sqlite/database/sqlite/SQLiteException"; - break; - } - - if (sqlite3Message) { - char *zFullmsg = sqlite3_mprintf( - "%s (code %d)%s%s", sqlite3Message, errcode, - (message ? ": " : ""), (message ? message : "") - ); - jniThrowException(env, exceptionClass, zFullmsg); - sqlite3_free(zFullmsg); - } else { - jniThrowException(env, exceptionClass, message); - } -} - - -} // namespace android diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.h deleted file mode 100644 index 4bb471506..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteCommon.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#ifndef _ANDROID_DATABASE_SQLITE_COMMON_H -#define _ANDROID_DATABASE_SQLITE_COMMON_H - -#include -#include - -#include - -// Special log tags defined in SQLiteDebug.java. -#define SQLITE_LOG_TAG "SQLiteLog" -#define SQLITE_TRACE_TAG "SQLiteStatements" -#define SQLITE_PROFILE_TAG "SQLiteTime" - -namespace android { - -/* throw a SQLiteException with a message appropriate for the error in handle */ -void throw_sqlite3_exception(JNIEnv* env, sqlite3* handle); - -/* throw a SQLiteException with the given message */ -void throw_sqlite3_exception(JNIEnv* env, const char* message); - -/* throw a SQLiteException with a message appropriate for the error in handle - concatenated with the given message - */ -void throw_sqlite3_exception(JNIEnv* env, sqlite3* handle, const char* message); - -/* throw a SQLiteException for a given error code */ -void throw_sqlite3_exception_errcode(JNIEnv* env, int errcode, const char* message); - -void throw_sqlite3_exception(JNIEnv* env, int errcode, - const char* sqlite3Message, const char* message); - -} - -#endif // _ANDROID_DATABASE_SQLITE_COMMON_H diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteConnection.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteConnection.cpp deleted file mode 100644 index ab41e83a1..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteConnection.cpp +++ /dev/null @@ -1,1013 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#define LOG_TAG "SQLiteConnection" - -#include "ALog-priv.h" -#include -#include - -#include -#include -#include -#include - -#if 0 -#include -#endif - -#include -#if 0 -#include -#endif - -#include "android_database_SQLiteCommon.h" - -#include - -// Set to 1 to use UTF16 storage for localized indexes. -#define UTF16_STORAGE 0 - -namespace android { - -/* Busy timeout in milliseconds. - * If another connection (possibly in another process) has the database locked - * for - * longer than this amount of time then SQLite will generate a SQLITE_BUSY - * error. - * The SQLITE_BUSY error is then raised as a SQLiteDatabaseLockedException. - * - * In ordinary usage, busy timeouts are quite rare. Most databases only ever - * have a single open connection at a time unless they are using WAL. When - * using - * WAL, a timeout could occur if one connection is busy performing an - * auto-checkpoint - * operation. The busy timeout needs to be long enough to tolerate slow I/O - * write - * operations but not so long as to cause the application to hang indefinitely - * if - * there is a problem acquiring a database lock. - */ -static const int BUSY_TIMEOUT_MS = 2500; - -static JavaVM *gpJavaVM = 0; - -static struct { - jfieldID name; - jfieldID numArgs; - jmethodID dispatchCallback; -} gSQLiteCustomFunctionClassInfo; - -static struct { jclass clazz; } gStringClassInfo; - -struct SQLiteConnection { - // Open flags. - // Must be kept in sync with the constants defined in SQLiteDatabase.java. - enum { - OPEN_READWRITE = 0x00000000, - OPEN_READONLY = 0x00000001, - OPEN_READ_MASK = 0x00000001, - NO_LOCALIZED_COLLATORS = 0x00000010, - CREATE_IF_NECESSARY = 0x10000000, - }; - - sqlite3 *const db; - const int openFlags; - std::string path; - std::string label; - - volatile bool canceled; - - SQLiteConnection(sqlite3 *db, int openFlags, const std::string &path, - const std::string &label) - : db(db), openFlags(openFlags), path(path), label(label), - canceled(false) {} -}; - -// Called each time a statement begins execution, when tracing is enabled. -static void sqliteTraceCallback(void *data, const char *sql) { - SQLiteConnection *connection = static_cast(data); - ALOG(LOG_VERBOSE, SQLITE_TRACE_TAG, "%s: \"%s\"\n", connection->label.c_str(), - sql); -} - -// Called each time a statement finishes execution, when profiling is enabled. -static void sqliteProfileCallback(void *data, const char *sql, - sqlite3_uint64 tm) { - SQLiteConnection *connection = static_cast(data); - ALOG(LOG_VERBOSE, SQLITE_PROFILE_TAG, "%s: \"%s\" took %0.3f ms\n", - connection->label.c_str(), sql, tm * 0.000001f); -} - -// Called after each SQLite VM instruction when cancelation is enabled. -static int sqliteProgressHandlerCallback(void *data) { - SQLiteConnection *connection = static_cast(data); - return connection->canceled; -} - -/* -** This function is a collation sequence callback equivalent to the built-in -** BINARY sequence. -** -** Stock Android uses a modified version of sqlite3.c that calls out to a module -** named "sqlite3_android" to add extra built-in collations and functions to -** all database handles. Specifically, collation sequence "LOCALIZED". For now, -** this module does not include sqlite3_android (since it is difficult to build -** with the NDK only). Instead, this function is registered as "LOCALIZED" for -*all -** new database handles. -*/ -static int coll_localized(void *not_used, int nKey1, const void *pKey1, - int nKey2, const void *pKey2) { - int rc, n; - n = nKey1 < nKey2 ? nKey1 : nKey2; - rc = memcmp(pKey1, pKey2, n); - if (rc == 0) { - rc = nKey1 - nKey2; - } - return rc; -} - -static jlong nativeOpen(JNIEnv *env, jclass clazz, jstring pathStr, - jint openFlags, jstring labelStr, jboolean enableTrace, - jboolean enableProfile) { - int sqliteFlags; - if (openFlags & SQLiteConnection::CREATE_IF_NECESSARY) { - sqliteFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE; - } else if (openFlags & SQLiteConnection::OPEN_READONLY) { - sqliteFlags = SQLITE_OPEN_READONLY; - } else { - sqliteFlags = SQLITE_OPEN_READWRITE; - } - - const char *pathChars = env->GetStringUTFChars(pathStr, NULL); - std::string path(pathChars); - env->ReleaseStringUTFChars(pathStr, pathChars); - - const char *labelChars = env->GetStringUTFChars(labelStr, NULL); - std::string label(labelChars); - env->ReleaseStringUTFChars(labelStr, labelChars); - - sqlite3 *db; - int err = sqlite3_open_v2(path.c_str(), &db, sqliteFlags, NULL); - if (err != SQLITE_OK) { - throw_sqlite3_exception_errcode(env, err, "Could not open database"); - return 0; - } - err = - sqlite3_create_collation(db, "localized", SQLITE_UTF8, 0, coll_localized); - if (err != SQLITE_OK) { - throw_sqlite3_exception_errcode(env, err, "Could not register collation"); - sqlite3_close(db); - return 0; - } - - // Check that the database is really read/write when that is what we asked - // for. - if ((sqliteFlags & SQLITE_OPEN_READWRITE) && sqlite3_db_readonly(db, NULL)) { - throw_sqlite3_exception(env, db, - "Could not open the database in read/write mode."); - sqlite3_close(db); - return 0; - } - - // Set the default busy handler to retry automatically before returning - // SQLITE_BUSY. - err = sqlite3_busy_timeout(db, BUSY_TIMEOUT_MS); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, db, "Could not set busy timeout"); - sqlite3_close(db); - return 0; - } - -// Register custom Android functions. -#if 0 - err = register_android_functions(db, UTF16_STORAGE); - if (err) { - throw_sqlite3_exception(env, db, "Could not register Android SQL functions."); - sqlite3_close(db); - return 0; - } -#endif - - // Create wrapper object. - SQLiteConnection *connection = - new SQLiteConnection(db, openFlags, path, label); - - // Enable tracing and profiling if requested. - if (enableTrace) { - sqlite3_trace(db, &sqliteTraceCallback, connection); - } - if (enableProfile) { - sqlite3_profile(db, &sqliteProfileCallback, connection); - } - - ALOGV("Opened connection %p with label '%s'", db, label.c_str()); - return reinterpret_cast(connection); -} - -static void nativeClose(JNIEnv *env, jclass clazz, jlong connectionPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - - if (connection) { - ALOGV("Closing connection %p", connection->db); - int err = sqlite3_close(connection->db); - if (err != SQLITE_OK) { - // This can happen if sub-objects aren't closed first. Make sure the - // caller knows. - ALOGE("sqlite3_close(%p) failed: %d", connection->db, err); - throw_sqlite3_exception(env, connection->db, "Count not close db."); - return; - } - - delete connection; - } -} - -// Called each time a custom function is evaluated. -static void sqliteCustomFunctionCallback(sqlite3_context *context, int argc, - sqlite3_value **argv) { - - JNIEnv *env = 0; - gpJavaVM->GetEnv((void **)&env, JNI_VERSION_1_4); - - // Get the callback function object. - // Create a new local reference to it in case the callback tries to do - // something - // dumb like unregister the function (thereby destroying the global ref) while - // it is running. - jobject functionObjGlobal = - reinterpret_cast(sqlite3_user_data(context)); - jobject functionObj = env->NewLocalRef(functionObjGlobal); - - jobjectArray argsArray = - env->NewObjectArray(argc, gStringClassInfo.clazz, NULL); - if (argsArray) { - for (int i = 0; i < argc; i++) { - const jchar *arg = - static_cast(sqlite3_value_text16(argv[i])); - if (!arg) { - ALOGW("NULL argument in custom_function_callback. This should not " - "happen."); - } else { - size_t argLen = sqlite3_value_bytes16(argv[i]) / sizeof(jchar); - jstring argStr = env->NewString(arg, argLen); - if (!argStr) { - goto error; // out of memory error - } - env->SetObjectArrayElement(argsArray, i, argStr); - env->DeleteLocalRef(argStr); - } - } - - // TODO: Support functions that return values. - env->CallVoidMethod(functionObj, - gSQLiteCustomFunctionClassInfo.dispatchCallback, - argsArray); - - error: - env->DeleteLocalRef(argsArray); - } - - env->DeleteLocalRef(functionObj); - - if (env->ExceptionCheck()) { - ALOGE("An exception was thrown by custom SQLite function."); - /* LOGE_EX(env); */ - env->ExceptionClear(); - } -} - -// Called when a custom function is destroyed. -static void sqliteCustomFunctionDestructor(void *data) { - jobject functionObjGlobal = reinterpret_cast(data); - JNIEnv *env = 0; - gpJavaVM->GetEnv((void **)&env, JNI_VERSION_1_4); - env->DeleteGlobalRef(functionObjGlobal); -} - -static void nativeRegisterCustomFunction(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jobject functionObj) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - - jstring nameStr = jstring( - env->GetObjectField(functionObj, gSQLiteCustomFunctionClassInfo.name)); - jint numArgs = - env->GetIntField(functionObj, gSQLiteCustomFunctionClassInfo.numArgs); - - jobject functionObjGlobal = env->NewGlobalRef(functionObj); - - const char *name = env->GetStringUTFChars(nameStr, NULL); - int err = - sqlite3_create_function_v2(connection->db, name, numArgs, SQLITE_UTF16, - reinterpret_cast(functionObjGlobal), - &sqliteCustomFunctionCallback, NULL, NULL, - &sqliteCustomFunctionDestructor); - env->ReleaseStringUTFChars(nameStr, name); - - if (err != SQLITE_OK) { - ALOGE("sqlite3_create_function returned %d", err); - env->DeleteGlobalRef(functionObjGlobal); - throw_sqlite3_exception(env, connection->db); - return; - } -} - -static void nativeRegisterLocalizedCollators(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jstring localeStr) { -#if 0 - SQLiteConnection* connection = reinterpret_cast(connectionPtr); - - const char* locale = env->GetStringUTFChars(localeStr, NULL); - int err = register_localized_collators(connection->db, locale, UTF16_STORAGE); - env->ReleaseStringUTFChars(localeStr, locale); - - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db); - } -#endif -} - -static jlong nativePrepareStatement(JNIEnv *env, jclass clazz, - jlong connectionPtr, jstring sqlString) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - - jsize sqlLength = env->GetStringLength(sqlString); - const jchar *sql = env->GetStringCritical(sqlString, NULL); - sqlite3_stmt *statement; - int err = sqlite3_prepare16_v2(connection->db, sql, sqlLength * sizeof(jchar), - &statement, NULL); - env->ReleaseStringCritical(sqlString, sql); -#if 0 - if (err != SQLITE_OK) { - // Error messages like 'near ")": syntax error' are not - // always helpful enough, so construct an error string that - // includes the query itself. - const char *query = env->GetStringUTFChars(sqlString, NULL); - char *message[512]; - if (message) { - strcpy(message, ", while compiling: "); // less than 50 chars - strcat(message, query); - } - env->ReleaseStringUTFChars(sqlString, query); - throw_sqlite3_exception(env, connection->db, message); - return 0; - } -#endif - ALOGV("Prepared statement %p on connection %p", statement, connection->db); - return reinterpret_cast(statement); -} - -static void nativeFinalizeStatement(JNIEnv *env, jclass clazz, - jlong connectionPtr, jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - // We ignore the result of sqlite3_finalize because it is really telling us - // about - // whether any errors occurred while executing the statement. The statement - // itself - // is always finalized regardless. - ALOGV("Finalized statement %p on connection %p", statement, connection->db); - sqlite3_finalize(statement); -} - -static jint nativeGetParameterCount(JNIEnv *env, jclass clazz, - jlong connectionPtr, jlong statementPtr) { - // SQLiteConnection *connection = - // reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - return sqlite3_bind_parameter_count(statement); -} - -static jboolean nativeIsReadOnly(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr) { - // SQLiteConnection *connection = - // reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - return sqlite3_stmt_readonly(statement) != 0; -} - -static jint nativeGetColumnCount(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr) { - // SQLiteConnection *connection = - // reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - return sqlite3_column_count(statement); -} - -static jstring nativeGetColumnName(JNIEnv *env, jclass clazz, - jlong connectionPtr, jlong statementPtr, - jint index) { - // SQLiteConnection *connection = - // reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - const jchar *name = - static_cast(sqlite3_column_name16(statement, index)); - if (name) { - size_t length = 0; - while (name[length]) { - length += 1; - } - return env->NewString(name, length); - } - return NULL; -} - -static void nativeBindNull(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr, jint index) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = sqlite3_bind_null(statement, index); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static void nativeBindLong(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr, jint index, jlong value) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = sqlite3_bind_int64(statement, index, value); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static void nativeBindDouble(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr, jint index, jdouble value) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = sqlite3_bind_double(statement, index, value); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static void nativeBindString(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr, jint index, - jstring valueString) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - jsize valueLength = env->GetStringLength(valueString); - const jchar *value = env->GetStringCritical(valueString, NULL); - int err = sqlite3_bind_text16(statement, index, value, - valueLength * sizeof(jchar), SQLITE_TRANSIENT); - env->ReleaseStringCritical(valueString, value); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static void nativeBindBlob(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr, jint index, - jbyteArray valueArray) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - jsize valueLength = env->GetArrayLength(valueArray); - jbyte *value = - static_cast(env->GetPrimitiveArrayCritical(valueArray, NULL)); - int err = - sqlite3_bind_blob(statement, index, value, valueLength, SQLITE_TRANSIENT); - env->ReleasePrimitiveArrayCritical(valueArray, value, JNI_ABORT); - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static void nativeResetStatementAndClearBindings(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = sqlite3_reset(statement); - if (err == SQLITE_OK) { - err = sqlite3_clear_bindings(statement); - } - if (err != SQLITE_OK) { - throw_sqlite3_exception(env, connection->db, NULL); - } -} - -static int executeNonQuery(JNIEnv *env, SQLiteConnection *connection, - sqlite3_stmt *statement) { - int err = sqlite3_step(statement); - if (err == SQLITE_ROW) { - throw_sqlite3_exception(env, "Queries can be performed using " - "SQLiteDatabase query or rawQuery methods " - "only."); - } else if (err != SQLITE_DONE) { - throw_sqlite3_exception(env, connection->db); - } - return err; -} - -static void nativeExecute(JNIEnv *env, jclass clazz, jlong connectionPtr, - jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - executeNonQuery(env, connection, statement); -} - -static jint nativeExecuteForChangedRowCount(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = executeNonQuery(env, connection, statement); - return err == SQLITE_DONE ? sqlite3_changes(connection->db) : -1; -} - -static jlong nativeExecuteForLastInsertedRowId(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = executeNonQuery(env, connection, statement); - return err == SQLITE_DONE && sqlite3_changes(connection->db) > 0 - ? sqlite3_last_insert_rowid(connection->db) - : -1; -} - -static int executeOneRowQuery(JNIEnv *env, SQLiteConnection *connection, - sqlite3_stmt *statement) { - int err = sqlite3_step(statement); - if (err != SQLITE_ROW) { - throw_sqlite3_exception(env, connection->db); - } - return err; -} - -static jlong nativeExecuteForLong(JNIEnv *env, jclass clazz, - jlong connectionPtr, jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = executeOneRowQuery(env, connection, statement); - if (err == SQLITE_ROW && sqlite3_column_count(statement) >= 1) { - return sqlite3_column_int64(statement, 0); - } - return -1; -} - -static jstring nativeExecuteForString(JNIEnv *env, jclass clazz, - jlong connectionPtr, jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = executeOneRowQuery(env, connection, statement); - if (err == SQLITE_ROW && sqlite3_column_count(statement) >= 1) { - const jchar *text = - static_cast(sqlite3_column_text16(statement, 0)); - if (text) { - size_t length = sqlite3_column_bytes16(statement, 0) / sizeof(jchar); - return env->NewString(text, length); - } - } - return NULL; -} - -static int createAshmemRegionWithData(JNIEnv *env, const void *data, - size_t length) { -#if 0 - int error = 0; - int fd = ashmem_create_region(NULL, length); - if (fd < 0) { - error = errno; - ALOGE("ashmem_create_region failed: %s", strerror(error)); - } else { - if (length > 0) { - void* ptr = mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (ptr == MAP_FAILED) { - error = errno; - ALOGE("mmap failed: %s", strerror(error)); - } else { - memcpy(ptr, data, length); - munmap(ptr, length); - } - } - - if (!error) { - if (ashmem_set_prot_region(fd, PROT_READ) < 0) { - error = errno; - ALOGE("ashmem_set_prot_region failed: %s", strerror(errno)); - } else { - return fd; - } - } - - close(fd); - } - -#endif - jniThrowIOException(env, -1); - return -1; -} - -static jint nativeExecuteForBlobFileDescriptor(JNIEnv *env, jclass clazz, - jlong connectionPtr, - jlong statementPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - sqlite3_stmt *statement = reinterpret_cast(statementPtr); - - int err = executeOneRowQuery(env, connection, statement); - if (err == SQLITE_ROW && sqlite3_column_count(statement) >= 1) { - const void *blob = sqlite3_column_blob(statement, 0); - if (blob) { - int length = sqlite3_column_bytes(statement, 0); - if (length >= 0) { - return createAshmemRegionWithData(env, blob, length); - } - } - } - return -1; -} - -/* -** Note: The following symbols must be in the same order as the corresponding -** elements in the aMethod[] array in function nativeExecuteForCursorWindow(). -*/ -enum CWMethodNames { - CW_CLEAR = 0, - CW_SETNUMCOLUMNS = 1, - CW_ALLOCROW = 2, - CW_FREELASTROW = 3, - CW_PUTNULL = 4, - CW_PUTLONG = 5, - CW_PUTDOUBLE = 6, - CW_PUTSTRING = 7, - CW_PUTBLOB = 8 -}; - -/* -** An instance of this structure represents a single CursorWindow java method. -*/ -struct CWMethod { - jmethodID id; /* Method id */ - const char *zName; /* Method name */ - const char *zSig; /* Method JNI signature */ -}; - -/* -** Append the contents of the row that SQL statement pStmt currently points to -** to the CursorWindow object passed as the second argument. The CursorWindow -** currently contains iRow rows. Return true on success or false if an error -** occurs. -*/ -static jboolean copyRowToWindow(JNIEnv *pEnv, jobject win, int iRow, - sqlite3_stmt *pStmt, CWMethod *aMethod) { - int nCol = sqlite3_column_count(pStmt); - int i; - jboolean bOk; - - bOk = pEnv->CallBooleanMethod(win, aMethod[CW_ALLOCROW].id); - for (i = 0; bOk && i < nCol; i++) { - switch (sqlite3_column_type(pStmt, i)) { - case SQLITE_NULL: { - bOk = pEnv->CallBooleanMethod(win, aMethod[CW_PUTNULL].id, iRow, i); - break; - } - - case SQLITE_INTEGER: { - jlong val = sqlite3_column_int64(pStmt, i); - bOk = pEnv->CallBooleanMethod(win, aMethod[CW_PUTLONG].id, val, iRow, i); - break; - } - - case SQLITE_FLOAT: { - jdouble val = sqlite3_column_double(pStmt, i); - bOk = - pEnv->CallBooleanMethod(win, aMethod[CW_PUTDOUBLE].id, val, iRow, i); - break; - } - - case SQLITE_TEXT: { - jchar *pStr = (jchar *)sqlite3_column_text16(pStmt, i); - int nStr = sqlite3_column_bytes16(pStmt, i) / sizeof(jchar); - jstring val = pEnv->NewString(pStr, nStr); - bOk = - pEnv->CallBooleanMethod(win, aMethod[CW_PUTSTRING].id, val, iRow, i); - pEnv->DeleteLocalRef(val); - break; - } - - default: { - assert(sqlite3_column_type(pStmt, i) == SQLITE_BLOB); - const jbyte *p = (const jbyte *)sqlite3_column_blob(pStmt, i); - int n = sqlite3_column_bytes(pStmt, i); - jbyteArray val = pEnv->NewByteArray(n); - pEnv->SetByteArrayRegion(val, 0, n, p); - bOk = pEnv->CallBooleanMethod(win, aMethod[CW_PUTBLOB].id, val, iRow, i); - pEnv->DeleteLocalRef(val); - break; - } - } - - if (bOk == 0) { - pEnv->CallVoidMethod(win, aMethod[CW_FREELASTROW].id); - } - } - - return bOk; -} - -static jboolean setWindowNumColumns(JNIEnv *pEnv, jobject win, - sqlite3_stmt *pStmt, CWMethod *aMethod) { - int nCol; - - pEnv->CallVoidMethod(win, aMethod[CW_CLEAR].id); - nCol = sqlite3_column_count(pStmt); - return pEnv->CallBooleanMethod(win, aMethod[CW_SETNUMCOLUMNS].id, (jint)nCol); -} - -/* -** This method has been rewritten for org.sqlite.database.*. The original -** android implementation used the C++ interface to populate a CursorWindow -** object. Since the NDK does not export this interface, we invoke the Java -** interface using standard JNI methods to do the same thing. -** -** This function executes the SQLite statement object passed as the 4th -** argument and copies one or more returned rows into the CursorWindow -** object passed as the 5th argument. The set of rows copied into the -** CursorWindow is always contiguous. -** -** The only row that *must* be copied into the CursorWindow is row -** iRowRequired. Ideally, all rows from iRowStart through to the end -** of the query are copied into the CursorWindow. If this is not possible -** (CursorWindow objects have a finite capacity), some compromise position -** is found (see comments embedded in the code below for details). -** -** The return value is a 64-bit integer calculated as follows: -** -** (iStart << 32) | nRow -** -** where iStart is the index of the first row copied into the CursorWindow. -** If the countAllRows argument is true, nRow is the total number of rows -** returned by the query. Otherwise, nRow is one greater than the index of -** the last row copied into the CursorWindow. -*/ -static jlong nativeExecuteForCursorWindow( - JNIEnv *pEnv, jclass clazz, - jlong connectionPtr, /* Pointer to SQLiteConnection C++ object */ - jlong statementPtr, /* Pointer to sqlite3_stmt object */ - jobject win, /* The CursorWindow object to populate */ - jint startPos, /* First row to add (advisory) */ - jint iRowRequired, /* Required row */ - jboolean countAllRows) { - // SQLiteConnection *pConnection = - // reinterpret_cast(connectionPtr); - sqlite3_stmt *pStmt = reinterpret_cast(statementPtr); - - CWMethod aMethod[] = { - {0, "clear", "()V"}, {0, "setNumColumns", "(I)Z"}, - {0, "allocRow", "()Z"}, {0, "freeLastRow", "()V"}, - {0, "putNull", "(II)Z"}, {0, "putLong", "(JII)Z"}, - {0, "putDouble", "(DII)Z"}, {0, "putString", "(Ljava/lang/String;II)Z"}, - {0, "putBlob", "([BII)Z"}, - }; - jclass cls; /* Class android.database.CursorWindow */ - unsigned int i; /* Iterator variable */ - // int nCol; /* Number of columns returned by pStmt */ - int nRow; - jboolean bOk; - int iStart; /* First row copied to CursorWindow */ - - /* Locate all required CursorWindow methods. */ - cls = pEnv->FindClass("android/database/CursorWindow"); - for (i = 0; i < (sizeof(aMethod) / sizeof(struct CWMethod)); i++) { - aMethod[i].id = pEnv->GetMethodID(cls, aMethod[i].zName, aMethod[i].zSig); - if (aMethod[i].id == NULL) { - jniThrowExceptionFmt(pEnv, "java/lang/Exception", - "Failed to find method CursorWindow.%s()", - aMethod[i].zName); - return 0; - } - } - - /* Set the number of columns in the window */ - bOk = setWindowNumColumns(pEnv, win, pStmt, aMethod); - if (bOk == 0) - return 0; - - nRow = 0; - iStart = startPos; - while (sqlite3_step(pStmt) == SQLITE_ROW) { - /* Only copy in rows that occur at or after row index iStart. */ - if (nRow >= iStart && bOk) { - bOk = copyRowToWindow(pEnv, win, (nRow - iStart), pStmt, aMethod); - if (bOk == 0) { - /* The CursorWindow object ran out of memory. If row iRowRequired was - ** not successfully added before this happened, clear the CursorWindow - ** and try to add the current row again. */ - if (nRow <= iRowRequired) { - bOk = setWindowNumColumns(pEnv, win, pStmt, aMethod); - if (bOk == 0) { - sqlite3_reset(pStmt); - return 0; - } - iStart = nRow; - bOk = copyRowToWindow(pEnv, win, (nRow - iStart), pStmt, aMethod); - } - - /* If the CursorWindow is still full and the countAllRows flag is not - ** set, break out of the loop here. If countAllRows is set, continue - ** so as to set variable nRow correctly. */ - if (bOk == 0 && countAllRows == 0) - break; - } - } - - nRow++; - } - - /* Finalize the statement. If this indicates an error occurred, throw an - ** SQLiteException exception. */ - int rc = sqlite3_reset(pStmt); - if (rc != SQLITE_OK) { - throw_sqlite3_exception(pEnv, sqlite3_db_handle(pStmt)); - return 0; - } - - jlong lRet = jlong(iStart) << 32 | jlong(nRow); - return lRet; -} - -static jint nativeGetDbLookaside(JNIEnv *env, jobject clazz, - jlong connectionPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - - int cur = -1; - int unused; - sqlite3_db_status(connection->db, SQLITE_DBSTATUS_LOOKASIDE_USED, &cur, - &unused, 0); - return cur; -} - -static void nativeCancel(JNIEnv *env, jobject clazz, jlong connectionPtr) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - connection->canceled = true; -} - -static void nativeResetCancel(JNIEnv *env, jobject clazz, jlong connectionPtr, - jboolean cancelable) { - SQLiteConnection *connection = - reinterpret_cast(connectionPtr); - connection->canceled = false; - - if (cancelable) { - sqlite3_progress_handler(connection->db, 4, sqliteProgressHandlerCallback, - connection); - } else { - sqlite3_progress_handler(connection->db, 0, NULL, NULL); - } -} - -static jboolean nativeHasCodec(JNIEnv *env, jobject clazz) { -#ifdef SQLITE_HAS_CODEC - return true; -#else - return false; -#endif -} - -static JNINativeMethod sMethods[] = { - /* name, signature, funcPtr */ - {"nativeOpen", "(Ljava/lang/String;ILjava/lang/String;ZZ)J", - (void *)nativeOpen}, - {"nativeClose", "(J)V", (void *)nativeClose}, - {"nativeRegisterCustomFunction", - "(JLorg/sqlite/database/sqlite/SQLiteCustomFunction;)V", - (void *)nativeRegisterCustomFunction}, - {"nativeRegisterLocalizedCollators", "(JLjava/lang/String;)V", - (void *)nativeRegisterLocalizedCollators}, - {"nativePrepareStatement", "(JLjava/lang/String;)J", - (void *)nativePrepareStatement}, - {"nativeFinalizeStatement", "(JJ)V", (void *)nativeFinalizeStatement}, - {"nativeGetParameterCount", "(JJ)I", (void *)nativeGetParameterCount}, - {"nativeIsReadOnly", "(JJ)Z", (void *)nativeIsReadOnly}, - {"nativeGetColumnCount", "(JJ)I", (void *)nativeGetColumnCount}, - {"nativeGetColumnName", "(JJI)Ljava/lang/String;", - (void *)nativeGetColumnName}, - {"nativeBindNull", "(JJI)V", (void *)nativeBindNull}, - {"nativeBindLong", "(JJIJ)V", (void *)nativeBindLong}, - {"nativeBindDouble", "(JJID)V", (void *)nativeBindDouble}, - {"nativeBindString", "(JJILjava/lang/String;)V", (void *)nativeBindString}, - {"nativeBindBlob", "(JJI[B)V", (void *)nativeBindBlob}, - {"nativeResetStatementAndClearBindings", "(JJ)V", - (void *)nativeResetStatementAndClearBindings}, - {"nativeExecute", "(JJ)V", (void *)nativeExecute}, - {"nativeExecuteForLong", "(JJ)J", (void *)nativeExecuteForLong}, - {"nativeExecuteForString", "(JJ)Ljava/lang/String;", - (void *)nativeExecuteForString}, - {"nativeExecuteForBlobFileDescriptor", "(JJ)I", - (void *)nativeExecuteForBlobFileDescriptor}, - {"nativeExecuteForChangedRowCount", "(JJ)I", - (void *)nativeExecuteForChangedRowCount}, - {"nativeExecuteForLastInsertedRowId", "(JJ)J", - (void *)nativeExecuteForLastInsertedRowId}, - {"nativeExecuteForCursorWindow", "(JJLandroid/database/CursorWindow;IIZ)J", - (void *)nativeExecuteForCursorWindow}, - {"nativeGetDbLookaside", "(J)I", (void *)nativeGetDbLookaside}, - {"nativeCancel", "(J)V", (void *)nativeCancel}, - {"nativeResetCancel", "(JZ)V", (void *)nativeResetCancel}, - - {"nativeHasCodec", "()Z", (void *)nativeHasCodec}, -}; - -#define FIND_CLASS(var, className) \ - var = env->FindClass(className); \ - LOG_FATAL_IF(!var, "Unable to find class " className); - -#define GET_METHOD_ID(var, clazz, methodName, fieldDescriptor) \ - var = env->GetMethodID(clazz, methodName, fieldDescriptor); \ - LOG_FATAL_IF(!var, "Unable to find method" methodName); - -#define GET_FIELD_ID(var, clazz, fieldName, fieldDescriptor) \ - var = env->GetFieldID(clazz, fieldName, fieldDescriptor); \ - LOG_FATAL_IF(!var, "Unable to find field " fieldName); - -int register_android_database_SQLiteConnection(JNIEnv *env) { - jclass clazz; - FIND_CLASS(clazz, "org/sqlite/database/sqlite/SQLiteCustomFunction"); - - GET_FIELD_ID(gSQLiteCustomFunctionClassInfo.name, clazz, "name", - "Ljava/lang/String;"); - GET_FIELD_ID(gSQLiteCustomFunctionClassInfo.numArgs, clazz, "numArgs", "I"); - GET_METHOD_ID(gSQLiteCustomFunctionClassInfo.dispatchCallback, clazz, - "dispatchCallback", "([Ljava/lang/String;)V"); - - FIND_CLASS(clazz, "java/lang/String"); - gStringClassInfo.clazz = jclass(env->NewGlobalRef(clazz)); - - return jniRegisterNativeMethods(env, - "org/sqlite/database/sqlite/SQLiteConnection", - sMethods, NELEM(sMethods)); -} - -extern int register_android_database_SQLiteGlobal(JNIEnv *env); -extern int register_android_database_SQLiteDebug(JNIEnv *env); - -} // namespace android - -extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { - JNIEnv *env = 0; - - android::gpJavaVM = vm; - vm->GetEnv((void **)&env, JNI_VERSION_1_4); - - android::register_android_database_SQLiteConnection(env); - android::register_android_database_SQLiteDebug(env); - android::register_android_database_SQLiteGlobal(env); - - return JNI_VERSION_1_4; -} diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteDebug.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteDebug.cpp deleted file mode 100644 index cbdfc41bd..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteDebug.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#define LOG_TAG "SQLiteDebug" - -#include -#include -#include - -#include -#include -#include -#include - -#include - -namespace android { - -static struct { - jfieldID memoryUsed; - jfieldID pageCacheOverflow; - jfieldID largestMemAlloc; -} gSQLiteDebugPagerStatsClassInfo; - -static void nativeGetPagerStats(JNIEnv *env, jobject clazz, jobject statsObj) -{ - int memoryUsed; - int pageCacheOverflow; - int largestMemAlloc; - int unused; - - sqlite3_status(SQLITE_STATUS_MEMORY_USED, &memoryUsed, &unused, 0); - sqlite3_status(SQLITE_STATUS_MALLOC_SIZE, &unused, &largestMemAlloc, 0); - sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &pageCacheOverflow, &unused, 0); - env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.memoryUsed, memoryUsed); - env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.pageCacheOverflow, - pageCacheOverflow); - env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.largestMemAlloc, largestMemAlloc); -} - -/* - * JNI registration. - */ - -static JNINativeMethod gMethods[] = -{ - { "nativeGetPagerStats", "(Lorg/sqlite/database/sqlite/SQLiteDebug$PagerStats;)V", - (void*) nativeGetPagerStats }, -}; - -#define FIND_CLASS(var, className) \ - var = env->FindClass(className); \ - LOG_FATAL_IF(! var, "Unable to find class " className); - -#define GET_FIELD_ID(var, clazz, fieldName, fieldDescriptor) \ - var = env->GetFieldID(clazz, fieldName, fieldDescriptor); \ - LOG_FATAL_IF(! var, "Unable to find field " fieldName); - -int register_android_database_SQLiteDebug(JNIEnv *env) -{ - jclass clazz; - FIND_CLASS(clazz, "org/sqlite/database/sqlite/SQLiteDebug$PagerStats"); - - GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.memoryUsed, clazz, - "memoryUsed", "I"); - GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.largestMemAlloc, clazz, - "largestMemAlloc", "I"); - GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.pageCacheOverflow, clazz, - "pageCacheOverflow", "I"); - - return jniRegisterNativeMethods(env, "org/sqlite/database/sqlite/SQLiteDebug", - gMethods, NELEM(gMethods)); -} - -} // namespace android diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteGlobal.cpp b/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteGlobal.cpp deleted file mode 100644 index a22b3428d..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/android_database_SQLiteGlobal.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -** Modified to support SQLite extensions by the SQLite developers: -** sqlite-dev@sqlite.org. -*/ - -#define LOG_TAG "SQLiteGlobal" - -#include -#include -#include "ALog-priv.h" - - -#include -#if 0 -#include -#endif - - -#include "android_database_SQLiteCommon.h" - -namespace android { - -// Limit heap to 8MB for now. This is 4 times the maximum cursor window -// size, as has been used by the original code in SQLiteDatabase for -// a long time. -static const int SOFT_HEAP_LIMIT = 8 * 1024 * 1024; - - -// Called each time a message is logged. -static void sqliteLogCallback(void* data, int iErrCode, const char* zMsg) { - bool verboseLog = !!data; - if (iErrCode == 0 || iErrCode == SQLITE_CONSTRAINT || iErrCode == SQLITE_SCHEMA) { - if (verboseLog) { - ALOG(LOG_VERBOSE, SQLITE_LOG_TAG, "(%d) %s\n", iErrCode, zMsg); - } - } else { - ALOG(LOG_ERROR, SQLITE_LOG_TAG, "(%d) %s\n", iErrCode, zMsg); - } -} - -// Sets the global SQLite configuration. -// This must be called before any other SQLite functions are called. -static void sqliteInitialize() { - // Enable multi-threaded mode. In this mode, SQLite is safe to use by multiple - // threads as long as no two threads use the same database connection at the same - // time (which we guarantee in the SQLite database wrappers). - sqlite3_config(SQLITE_CONFIG_MULTITHREAD); - - // Redirect SQLite log messages to the Android log. -#if 0 - bool verboseLog = android_util_Log_isVerboseLogEnabled(SQLITE_LOG_TAG); -#endif - bool verboseLog = false; - sqlite3_config(SQLITE_CONFIG_LOG, &sqliteLogCallback, verboseLog ? (void*)1 : NULL); - - // The soft heap limit prevents the page cache allocations from growing - // beyond the given limit, no matter what the max page cache sizes are - // set to. The limit does not, as of 3.5.0, affect any other allocations. - sqlite3_soft_heap_limit(SOFT_HEAP_LIMIT); - - // Initialize SQLite. - sqlite3_initialize(); -} - -static jint nativeReleaseMemory(JNIEnv* env, jclass clazz) { - return sqlite3_release_memory(SOFT_HEAP_LIMIT); -} - -static JNINativeMethod sMethods[] = -{ - /* name, signature, funcPtr */ - { "nativeReleaseMemory", "()I", - (void*)nativeReleaseMemory }, -}; - -int register_android_database_SQLiteGlobal(JNIEnv *env) -{ - sqliteInitialize(); - - return jniRegisterNativeMethods(env, "org/sqlite/database/sqlite/SQLiteGlobal", - sMethods, NELEM(sMethods)); -} - -} // namespace android diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JNIHelp.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JNIHelp.h deleted file mode 100644 index 758b7c78e..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JNIHelp.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * JNI helper functions. - * - * This file may be included by C or C++ code, which is trouble because jni.h - * uses different typedefs for JNIEnv in each language. - * - * TODO: remove C support. - */ -#ifndef NATIVEHELPER_JNIHELP_H_ -#define NATIVEHELPER_JNIHELP_H_ - -#include "jni.h" -#include - -#ifndef NELEM -# define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0]))) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Register one or more native methods with a particular class. - * "className" looks like "java/lang/String". Aborts on failure. - * TODO: fix all callers and change the return type to void. - */ -int jniRegisterNativeMethods(C_JNIEnv* env, const char* className, const JNINativeMethod* gMethods, int numMethods); - -/* - * Throw an exception with the specified class and an optional message. - * - * The "className" argument will be passed directly to FindClass, which - * takes strings with slashes (e.g. "java/lang/Object"). - * - * If an exception is currently pending, we log a warning message and - * clear it. - * - * Returns 0 on success, nonzero if something failed (e.g. the exception - * class couldn't be found, so *an* exception will still be pending). - * - * Currently aborts the VM if it can't throw the exception. - */ -int jniThrowException(C_JNIEnv* env, const char* className, const char* msg); - -/* - * Throw a java.lang.NullPointerException, with an optional message. - */ -int jniThrowNullPointerException(C_JNIEnv* env, const char* msg); - -/* - * Throw a java.lang.RuntimeException, with an optional message. - */ -int jniThrowRuntimeException(C_JNIEnv* env, const char* msg); - -/* - * Throw a java.io.IOException, generating the message from errno. - */ -int jniThrowIOException(C_JNIEnv* env, int errnum); - -/* - * Return a pointer to a locale-dependent error string explaining errno - * value 'errnum'. The returned pointer may or may not be equal to 'buf'. - * This function is thread-safe (unlike strerror) and portable (unlike - * strerror_r). - */ -const char* jniStrError(int errnum, char* buf, size_t buflen); - -/* - * Returns a new java.io.FileDescriptor for the given int fd. - */ -jobject jniCreateFileDescriptor(C_JNIEnv* env, int fd); - -/* - * Returns the int fd from a java.io.FileDescriptor. - */ -int jniGetFDFromFileDescriptor(C_JNIEnv* env, jobject fileDescriptor); - -/* - * Sets the int fd in a java.io.FileDescriptor. - */ -void jniSetFileDescriptorOfFD(C_JNIEnv* env, jobject fileDescriptor, int value); - -/* - * Returns the reference from a java.lang.ref.Reference. - */ -jobject jniGetReferent(C_JNIEnv* env, jobject ref); - -/* - * Log a message and an exception. - * If exception is NULL, logs the current exception in the JNI environment. - */ -void jniLogException(C_JNIEnv* env, int priority, const char* tag, jthrowable exception); - -#ifdef __cplusplus -} -#endif - - -/* - * For C++ code, we provide inlines that map to the C functions. g++ always - * inlines these, even on non-optimized builds. - */ -#if defined(__cplusplus) -inline int jniRegisterNativeMethods(JNIEnv* env, const char* className, const JNINativeMethod* gMethods, int numMethods) { - return jniRegisterNativeMethods(&env->functions, className, gMethods, numMethods); -} - -inline int jniThrowException(JNIEnv* env, const char* className, const char* msg) { - return jniThrowException(&env->functions, className, msg); -} - -extern "C" int jniThrowExceptionFmt(C_JNIEnv* env, const char* className, const char* fmt, va_list args); - -/* - * Equivalent to jniThrowException but with a printf-like format string and - * variable-length argument list. This is only available in C++. - */ -inline int jniThrowExceptionFmt(JNIEnv* env, const char* className, const char* fmt, ...) { - va_list args; - va_start(args, fmt); - return jniThrowExceptionFmt(&env->functions, className, fmt, args); - va_end(args); -} - -inline int jniThrowNullPointerException(JNIEnv* env, const char* msg) { - return jniThrowNullPointerException(&env->functions, msg); -} - -inline int jniThrowRuntimeException(JNIEnv* env, const char* msg) { - return jniThrowRuntimeException(&env->functions, msg); -} - -inline int jniThrowIOException(JNIEnv* env, int errnum) { - return jniThrowIOException(&env->functions, errnum); -} - -inline jobject jniCreateFileDescriptor(JNIEnv* env, int fd) { - return jniCreateFileDescriptor(&env->functions, fd); -} - -inline int jniGetFDFromFileDescriptor(JNIEnv* env, jobject fileDescriptor) { - return jniGetFDFromFileDescriptor(&env->functions, fileDescriptor); -} - -inline void jniSetFileDescriptorOfFD(JNIEnv* env, jobject fileDescriptor, int value) { - jniSetFileDescriptorOfFD(&env->functions, fileDescriptor, value); -} - -inline jobject jniGetReferent(JNIEnv* env, jobject ref) { - return jniGetReferent(&env->functions, ref); -} - -inline void jniLogException(JNIEnv* env, int priority, const char* tag, jthrowable exception = NULL) { - jniLogException(&env->functions, priority, tag, exception); -} - -#endif - -/* - * TEMP_FAILURE_RETRY is defined by some, but not all, versions of - * . (Alas, it is not as standard as we'd hoped!) So, if it's - * not already defined, then define it here. - */ -#ifndef TEMP_FAILURE_RETRY -/* Used to retry syscalls that can return EINTR. */ -#define TEMP_FAILURE_RETRY(exp) ({ \ - typeof (exp) _rc; \ - do { \ - _rc = (exp); \ - } while (_rc == -1 && errno == EINTR); \ - _rc; }) -#endif - -#endif /* NATIVEHELPER_JNIHELP_H_ */ diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JniConstants.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JniConstants.h deleted file mode 100644 index 103e5e2ab..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/JniConstants.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef JNI_CONSTANTS_H_included -#define JNI_CONSTANTS_H_included - -#include "JNIHelp.h" - -/** - * A cache to avoid calling FindClass at runtime. - * - * Class lookup is relatively expensive (2.5us on passion-eng at the time of writing), so we do - * all such lookups eagerly at startup. This means that code that never uses, say, - * java.util.zip.Deflater still has to pay for the lookup, but it means that on a device the cost - * is definitely paid during boot and amortized. A central cache also removes the temptation to - * dynamically call FindClass rather than add a small cache to each file that needs one. Another - * cost is that each class cached here requires a global reference, though in practice we save - * enough by not having a global reference for each file that uses a class such as java.lang.String - * which is used in several files. - * - * FindClass is still called in a couple of situations: when throwing exceptions, and in some of - * the serialization code. The former is clearly not a performance case, and we're currently - * assuming that neither is the latter. - * - * TODO: similar arguments hold for field and method IDs; we should cache them centrally too. - */ -struct JniConstants { - static void init(JNIEnv* env); - - static jclass bidiRunClass; - static jclass bigDecimalClass; - static jclass booleanClass; - static jclass byteArrayClass; - static jclass byteClass; - static jclass calendarClass; - static jclass characterClass; - static jclass charsetICUClass; - static jclass constructorClass; - static jclass deflaterClass; - static jclass doubleClass; - static jclass errnoExceptionClass; - static jclass fieldClass; - static jclass fieldPositionIteratorClass; - static jclass fileDescriptorClass; - static jclass floatClass; - static jclass gaiExceptionClass; - static jclass inet6AddressClass; - static jclass inetAddressClass; - static jclass inetSocketAddressClass; - static jclass inetUnixAddressClass; - static jclass inflaterClass; - static jclass inputStreamClass; - static jclass integerClass; - static jclass localeDataClass; - static jclass longClass; - static jclass methodClass; - static jclass mutableIntClass; - static jclass mutableLongClass; - static jclass objectClass; - static jclass objectArrayClass; - static jclass outputStreamClass; - static jclass parsePositionClass; - static jclass patternSyntaxExceptionClass; - static jclass realToStringClass; - static jclass referenceClass; - static jclass shortClass; - static jclass socketClass; - static jclass socketImplClass; - static jclass stringClass; - static jclass structAddrinfoClass; - static jclass structFlockClass; - static jclass structGroupReqClass; - static jclass structLingerClass; - static jclass structPasswdClass; - static jclass structPollfdClass; - static jclass structStatClass; - static jclass structStatVfsClass; - static jclass structTimevalClass; - static jclass structUcredClass; - static jclass structUtsnameClass; -}; - -#define NATIVE_METHOD(className, functionName, signature) \ - { #functionName, signature, reinterpret_cast(className ## _ ## functionName) } - -#endif // JNI_CONSTANTS_H_included diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/ScopedLocalRef.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/ScopedLocalRef.h deleted file mode 100644 index 71d577679..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/ScopedLocalRef.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef SCOPED_LOCAL_REF_H_included -#define SCOPED_LOCAL_REF_H_included - -#include "jni.h" - -#include - -// A smart pointer that deletes a JNI local reference when it goes out of scope. -template -class ScopedLocalRef { -public: - ScopedLocalRef(JNIEnv* env, T localRef) : mEnv(env), mLocalRef(localRef) { - } - - ~ScopedLocalRef() { - reset(); - } - - void reset(T ptr = NULL) { - if (ptr != mLocalRef) { - if (mLocalRef != NULL) { - mEnv->DeleteLocalRef(mLocalRef); - } - mLocalRef = ptr; - } - } - - T release() __attribute__((warn_unused_result)) { - T localRef = mLocalRef; - mLocalRef = NULL; - return localRef; - } - - T get() const { - return mLocalRef; - } - -private: - JNIEnv* mEnv; - T mLocalRef; - - // Disallow copy and assignment. - ScopedLocalRef(const ScopedLocalRef&); - void operator=(const ScopedLocalRef&); -}; - -#endif // SCOPED_LOCAL_REF_H_included diff --git a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/jni.h b/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/jni.h deleted file mode 100644 index 1c2fb0cd7..000000000 --- a/packages/myddas/sqlite3/src/Android/jni/sqlite/nativehelper/jni.h +++ /dev/null @@ -1,1141 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * JNI specification, as defined by Sun: - * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html - * - * Everything here is expected to be VM-neutral. - */ - -#ifndef JNI_H_ -#define JNI_H_ - -#include -#include - -/* Primitive types that match up with Java equivalents. */ -typedef uint8_t jboolean; /* unsigned 8 bits */ -typedef int8_t jbyte; /* signed 8 bits */ -typedef uint16_t jchar; /* unsigned 16 bits */ -typedef int16_t jshort; /* signed 16 bits */ -typedef int32_t jint; /* signed 32 bits */ -typedef int64_t jlong; /* signed 64 bits */ -typedef float jfloat; /* 32-bit IEEE 754 */ -typedef double jdouble; /* 64-bit IEEE 754 */ - -/* "cardinal indices and sizes" */ -typedef jint jsize; - -#ifdef __cplusplus -/* - * Reference types, in C++ - */ -class _jobject {}; -class _jclass : public _jobject {}; -class _jstring : public _jobject {}; -class _jarray : public _jobject {}; -class _jobjectArray : public _jarray {}; -class _jbooleanArray : public _jarray {}; -class _jbyteArray : public _jarray {}; -class _jcharArray : public _jarray {}; -class _jshortArray : public _jarray {}; -class _jintArray : public _jarray {}; -class _jlongArray : public _jarray {}; -class _jfloatArray : public _jarray {}; -class _jdoubleArray : public _jarray {}; -class _jthrowable : public _jobject {}; - -typedef _jobject* jobject; -typedef _jclass* jclass; -typedef _jstring* jstring; -typedef _jarray* jarray; -typedef _jobjectArray* jobjectArray; -typedef _jbooleanArray* jbooleanArray; -typedef _jbyteArray* jbyteArray; -typedef _jcharArray* jcharArray; -typedef _jshortArray* jshortArray; -typedef _jintArray* jintArray; -typedef _jlongArray* jlongArray; -typedef _jfloatArray* jfloatArray; -typedef _jdoubleArray* jdoubleArray; -typedef _jthrowable* jthrowable; -typedef _jobject* jweak; - - -#else /* not __cplusplus */ - -/* - * Reference types, in C. - */ -typedef void* jobject; -typedef jobject jclass; -typedef jobject jstring; -typedef jobject jarray; -typedef jarray jobjectArray; -typedef jarray jbooleanArray; -typedef jarray jbyteArray; -typedef jarray jcharArray; -typedef jarray jshortArray; -typedef jarray jintArray; -typedef jarray jlongArray; -typedef jarray jfloatArray; -typedef jarray jdoubleArray; -typedef jobject jthrowable; -typedef jobject jweak; - -#endif /* not __cplusplus */ - -struct _jfieldID; /* opaque structure */ -typedef struct _jfieldID* jfieldID; /* field IDs */ - -struct _jmethodID; /* opaque structure */ -typedef struct _jmethodID* jmethodID; /* method IDs */ - -struct JNIInvokeInterface; - -typedef union jvalue { - jboolean z; - jbyte b; - jchar c; - jshort s; - jint i; - jlong j; - jfloat f; - jdouble d; - jobject l; -} jvalue; - -typedef enum jobjectRefType { - JNIInvalidRefType = 0, - JNILocalRefType = 1, - JNIGlobalRefType = 2, - JNIWeakGlobalRefType = 3 -} jobjectRefType; - -typedef struct { - const char* name; - const char* signature; - void* fnPtr; -} JNINativeMethod; - -struct _JNIEnv; -struct _JavaVM; -typedef const struct JNINativeInterface* C_JNIEnv; - -#if defined(__cplusplus) -typedef _JNIEnv JNIEnv; -typedef _JavaVM JavaVM; -#else -typedef const struct JNINativeInterface* JNIEnv; -typedef const struct JNIInvokeInterface* JavaVM; -#endif - -/* - * Table of interface function pointers. - */ -struct JNINativeInterface { - void* reserved0; - void* reserved1; - void* reserved2; - void* reserved3; - - jint (*GetVersion)(JNIEnv *); - - jclass (*DefineClass)(JNIEnv*, const char*, jobject, const jbyte*, - jsize); - jclass (*FindClass)(JNIEnv*, const char*); - - jmethodID (*FromReflectedMethod)(JNIEnv*, jobject); - jfieldID (*FromReflectedField)(JNIEnv*, jobject); - /* spec doesn't show jboolean parameter */ - jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean); - - jclass (*GetSuperclass)(JNIEnv*, jclass); - jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass); - - /* spec doesn't show jboolean parameter */ - jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean); - - jint (*Throw)(JNIEnv*, jthrowable); - jint (*ThrowNew)(JNIEnv *, jclass, const char *); - jthrowable (*ExceptionOccurred)(JNIEnv*); - void (*ExceptionDescribe)(JNIEnv*); - void (*ExceptionClear)(JNIEnv*); - void (*FatalError)(JNIEnv*, const char*); - - jint (*PushLocalFrame)(JNIEnv*, jint); - jobject (*PopLocalFrame)(JNIEnv*, jobject); - - jobject (*NewGlobalRef)(JNIEnv*, jobject); - void (*DeleteGlobalRef)(JNIEnv*, jobject); - void (*DeleteLocalRef)(JNIEnv*, jobject); - jboolean (*IsSameObject)(JNIEnv*, jobject, jobject); - - jobject (*NewLocalRef)(JNIEnv*, jobject); - jint (*EnsureLocalCapacity)(JNIEnv*, jint); - - jobject (*AllocObject)(JNIEnv*, jclass); - jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...); - jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list); - jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*); - - jclass (*GetObjectClass)(JNIEnv*, jobject); - jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass); - jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); - - jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); - jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...); - jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...); - jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...); - jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...); - jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...); - jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...); - jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...); - jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...); - jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list); - jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); - void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list); - void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); - - jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass, - jmethodID, ...); - void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass, - jmethodID, va_list); - void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass, - jmethodID, jvalue*); - - jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*); - - jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID); - jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID); - jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID); - jchar (*GetCharField)(JNIEnv*, jobject, jfieldID); - jshort (*GetShortField)(JNIEnv*, jobject, jfieldID); - jint (*GetIntField)(JNIEnv*, jobject, jfieldID); - jlong (*GetLongField)(JNIEnv*, jobject, jfieldID); - jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID); - jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID); - - void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject); - void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean); - void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte); - void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar); - void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort); - void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint); - void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong); - void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat); - void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble); - - jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*); - - jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...); - jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...); - jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID, - va_list); - jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID, - jvalue*); - jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...); - jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...); - jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...); - jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...); - jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...); - jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...); - jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...); - jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list); - jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...); - void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list); - void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); - - jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*, - const char*); - - jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); - jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID); - jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID); - jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID); - jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID); - jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID); - jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID); - jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID); - jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID); - - void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject); - void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean); - void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte); - void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar); - void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort); - void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint); - void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong); - void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat); - void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble); - - jstring (*NewString)(JNIEnv*, const jchar*, jsize); - jsize (*GetStringLength)(JNIEnv*, jstring); - const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*); - void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*); - jstring (*NewStringUTF)(JNIEnv*, const char*); - jsize (*GetStringUTFLength)(JNIEnv*, jstring); - /* JNI spec says this returns const jbyte*, but that's inconsistent */ - const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*); - void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*); - jsize (*GetArrayLength)(JNIEnv*, jarray); - jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject); - jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize); - void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject); - - jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize); - jbyteArray (*NewByteArray)(JNIEnv*, jsize); - jcharArray (*NewCharArray)(JNIEnv*, jsize); - jshortArray (*NewShortArray)(JNIEnv*, jsize); - jintArray (*NewIntArray)(JNIEnv*, jsize); - jlongArray (*NewLongArray)(JNIEnv*, jsize); - jfloatArray (*NewFloatArray)(JNIEnv*, jsize); - jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize); - - jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*); - jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*); - jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*); - jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*); - jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*); - jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*); - jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*); - jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*); - - void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray, - jboolean*, jint); - void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray, - jbyte*, jint); - void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray, - jchar*, jint); - void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray, - jshort*, jint); - void (*ReleaseIntArrayElements)(JNIEnv*, jintArray, - jint*, jint); - void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray, - jlong*, jint); - void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray, - jfloat*, jint); - void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray, - jdouble*, jint); - - void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, - jsize, jsize, jboolean*); - void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, - jsize, jsize, jbyte*); - void (*GetCharArrayRegion)(JNIEnv*, jcharArray, - jsize, jsize, jchar*); - void (*GetShortArrayRegion)(JNIEnv*, jshortArray, - jsize, jsize, jshort*); - void (*GetIntArrayRegion)(JNIEnv*, jintArray, - jsize, jsize, jint*); - void (*GetLongArrayRegion)(JNIEnv*, jlongArray, - jsize, jsize, jlong*); - void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, - jsize, jsize, jfloat*); - void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, - jsize, jsize, jdouble*); - - /* spec shows these without const; some jni.h do, some don't */ - void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray, - jsize, jsize, const jboolean*); - void (*SetByteArrayRegion)(JNIEnv*, jbyteArray, - jsize, jsize, const jbyte*); - void (*SetCharArrayRegion)(JNIEnv*, jcharArray, - jsize, jsize, const jchar*); - void (*SetShortArrayRegion)(JNIEnv*, jshortArray, - jsize, jsize, const jshort*); - void (*SetIntArrayRegion)(JNIEnv*, jintArray, - jsize, jsize, const jint*); - void (*SetLongArrayRegion)(JNIEnv*, jlongArray, - jsize, jsize, const jlong*); - void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray, - jsize, jsize, const jfloat*); - void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray, - jsize, jsize, const jdouble*); - - jint (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*, - jint); - jint (*UnregisterNatives)(JNIEnv*, jclass); - jint (*MonitorEnter)(JNIEnv*, jobject); - jint (*MonitorExit)(JNIEnv*, jobject); - jint (*GetJavaVM)(JNIEnv*, JavaVM**); - - void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*); - void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*); - - void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*); - void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint); - - const jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*); - void (*ReleaseStringCritical)(JNIEnv*, jstring, const jchar*); - - jweak (*NewWeakGlobalRef)(JNIEnv*, jobject); - void (*DeleteWeakGlobalRef)(JNIEnv*, jweak); - - jboolean (*ExceptionCheck)(JNIEnv*); - - jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong); - void* (*GetDirectBufferAddress)(JNIEnv*, jobject); - jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject); - - /* added in JNI 1.6 */ - jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject); -}; - -/* - * C++ object wrapper. - * - * This is usually overlaid on a C struct whose first element is a - * JNINativeInterface*. We rely somewhat on compiler behavior. - */ -struct _JNIEnv { - /* do not rename this; it does not seem to be entirely opaque */ - const struct JNINativeInterface* functions; - -#if defined(__cplusplus) - - jint GetVersion() - { return functions->GetVersion(this); } - - jclass DefineClass(const char *name, jobject loader, const jbyte* buf, - jsize bufLen) - { return functions->DefineClass(this, name, loader, buf, bufLen); } - - jclass FindClass(const char* name) - { return functions->FindClass(this, name); } - - jmethodID FromReflectedMethod(jobject method) - { return functions->FromReflectedMethod(this, method); } - - jfieldID FromReflectedField(jobject field) - { return functions->FromReflectedField(this, field); } - - jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) - { return functions->ToReflectedMethod(this, cls, methodID, isStatic); } - - jclass GetSuperclass(jclass clazz) - { return functions->GetSuperclass(this, clazz); } - - jboolean IsAssignableFrom(jclass clazz1, jclass clazz2) - { return functions->IsAssignableFrom(this, clazz1, clazz2); } - - jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) - { return functions->ToReflectedField(this, cls, fieldID, isStatic); } - - jint Throw(jthrowable obj) - { return functions->Throw(this, obj); } - - jint ThrowNew(jclass clazz, const char* message) - { return functions->ThrowNew(this, clazz, message); } - - jthrowable ExceptionOccurred() - { return functions->ExceptionOccurred(this); } - - void ExceptionDescribe() - { functions->ExceptionDescribe(this); } - - void ExceptionClear() - { functions->ExceptionClear(this); } - - void FatalError(const char* msg) - { functions->FatalError(this, msg); } - - jint PushLocalFrame(jint capacity) - { return functions->PushLocalFrame(this, capacity); } - - jobject PopLocalFrame(jobject result) - { return functions->PopLocalFrame(this, result); } - - jobject NewGlobalRef(jobject obj) - { return functions->NewGlobalRef(this, obj); } - - void DeleteGlobalRef(jobject globalRef) - { functions->DeleteGlobalRef(this, globalRef); } - - void DeleteLocalRef(jobject localRef) - { functions->DeleteLocalRef(this, localRef); } - - jboolean IsSameObject(jobject ref1, jobject ref2) - { return functions->IsSameObject(this, ref1, ref2); } - - jobject NewLocalRef(jobject ref) - { return functions->NewLocalRef(this, ref); } - - jint EnsureLocalCapacity(jint capacity) - { return functions->EnsureLocalCapacity(this, capacity); } - - jobject AllocObject(jclass clazz) - { return functions->AllocObject(this, clazz); } - - jobject NewObject(jclass clazz, jmethodID methodID, ...) - { - va_list args; - va_start(args, methodID); - jobject result = functions->NewObjectV(this, clazz, methodID, args); - va_end(args); - return result; - } - - jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args) - { return functions->NewObjectV(this, clazz, methodID, args); } - - jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args) - { return functions->NewObjectA(this, clazz, methodID, args); } - - jclass GetObjectClass(jobject obj) - { return functions->GetObjectClass(this, obj); } - - jboolean IsInstanceOf(jobject obj, jclass clazz) - { return functions->IsInstanceOf(this, obj, clazz); } - - jmethodID GetMethodID(jclass clazz, const char* name, const char* sig) - { return functions->GetMethodID(this, clazz, name, sig); } - -#define CALL_TYPE_METHOD(_jtype, _jname) \ - _jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \ - { \ - _jtype result; \ - va_list args; \ - va_start(args, methodID); \ - result = functions->Call##_jname##MethodV(this, obj, methodID, \ - args); \ - va_end(args); \ - return result; \ - } -#define CALL_TYPE_METHODV(_jtype, _jname) \ - _jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \ - va_list args) \ - { return functions->Call##_jname##MethodV(this, obj, methodID, args); } -#define CALL_TYPE_METHODA(_jtype, _jname) \ - _jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \ - jvalue* args) \ - { return functions->Call##_jname##MethodA(this, obj, methodID, args); } - -#define CALL_TYPE(_jtype, _jname) \ - CALL_TYPE_METHOD(_jtype, _jname) \ - CALL_TYPE_METHODV(_jtype, _jname) \ - CALL_TYPE_METHODA(_jtype, _jname) - - CALL_TYPE(jobject, Object) - CALL_TYPE(jboolean, Boolean) - CALL_TYPE(jbyte, Byte) - CALL_TYPE(jchar, Char) - CALL_TYPE(jshort, Short) - CALL_TYPE(jint, Int) - CALL_TYPE(jlong, Long) - CALL_TYPE(jfloat, Float) - CALL_TYPE(jdouble, Double) - - void CallVoidMethod(jobject obj, jmethodID methodID, ...) - { - va_list args; - va_start(args, methodID); - functions->CallVoidMethodV(this, obj, methodID, args); - va_end(args); - } - void CallVoidMethodV(jobject obj, jmethodID methodID, va_list args) - { functions->CallVoidMethodV(this, obj, methodID, args); } - void CallVoidMethodA(jobject obj, jmethodID methodID, jvalue* args) - { functions->CallVoidMethodA(this, obj, methodID, args); } - -#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ - _jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \ - jmethodID methodID, ...) \ - { \ - _jtype result; \ - va_list args; \ - va_start(args, methodID); \ - result = functions->CallNonvirtual##_jname##MethodV(this, obj, \ - clazz, methodID, args); \ - va_end(args); \ - return result; \ - } -#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ - _jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \ - jmethodID methodID, va_list args) \ - { return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \ - methodID, args); } -#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \ - _jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \ - jmethodID methodID, jvalue* args) \ - { return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \ - methodID, args); } - -#define CALL_NONVIRT_TYPE(_jtype, _jname) \ - CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ - CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ - CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) - - CALL_NONVIRT_TYPE(jobject, Object) - CALL_NONVIRT_TYPE(jboolean, Boolean) - CALL_NONVIRT_TYPE(jbyte, Byte) - CALL_NONVIRT_TYPE(jchar, Char) - CALL_NONVIRT_TYPE(jshort, Short) - CALL_NONVIRT_TYPE(jint, Int) - CALL_NONVIRT_TYPE(jlong, Long) - CALL_NONVIRT_TYPE(jfloat, Float) - CALL_NONVIRT_TYPE(jdouble, Double) - - void CallNonvirtualVoidMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) - { - va_list args; - va_start(args, methodID); - functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); - va_end(args); - } - void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) - { functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); } - void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, - jmethodID methodID, jvalue* args) - { functions->CallNonvirtualVoidMethodA(this, obj, clazz, methodID, args); } - - jfieldID GetFieldID(jclass clazz, const char* name, const char* sig) - { return functions->GetFieldID(this, clazz, name, sig); } - - jobject GetObjectField(jobject obj, jfieldID fieldID) - { return functions->GetObjectField(this, obj, fieldID); } - jboolean GetBooleanField(jobject obj, jfieldID fieldID) - { return functions->GetBooleanField(this, obj, fieldID); } - jbyte GetByteField(jobject obj, jfieldID fieldID) - { return functions->GetByteField(this, obj, fieldID); } - jchar GetCharField(jobject obj, jfieldID fieldID) - { return functions->GetCharField(this, obj, fieldID); } - jshort GetShortField(jobject obj, jfieldID fieldID) - { return functions->GetShortField(this, obj, fieldID); } - jint GetIntField(jobject obj, jfieldID fieldID) - { return functions->GetIntField(this, obj, fieldID); } - jlong GetLongField(jobject obj, jfieldID fieldID) - { return functions->GetLongField(this, obj, fieldID); } - jfloat GetFloatField(jobject obj, jfieldID fieldID) - { return functions->GetFloatField(this, obj, fieldID); } - jdouble GetDoubleField(jobject obj, jfieldID fieldID) - { return functions->GetDoubleField(this, obj, fieldID); } - - void SetObjectField(jobject obj, jfieldID fieldID, jobject value) - { functions->SetObjectField(this, obj, fieldID, value); } - void SetBooleanField(jobject obj, jfieldID fieldID, jboolean value) - { functions->SetBooleanField(this, obj, fieldID, value); } - void SetByteField(jobject obj, jfieldID fieldID, jbyte value) - { functions->SetByteField(this, obj, fieldID, value); } - void SetCharField(jobject obj, jfieldID fieldID, jchar value) - { functions->SetCharField(this, obj, fieldID, value); } - void SetShortField(jobject obj, jfieldID fieldID, jshort value) - { functions->SetShortField(this, obj, fieldID, value); } - void SetIntField(jobject obj, jfieldID fieldID, jint value) - { functions->SetIntField(this, obj, fieldID, value); } - void SetLongField(jobject obj, jfieldID fieldID, jlong value) - { functions->SetLongField(this, obj, fieldID, value); } - void SetFloatField(jobject obj, jfieldID fieldID, jfloat value) - { functions->SetFloatField(this, obj, fieldID, value); } - void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value) - { functions->SetDoubleField(this, obj, fieldID, value); } - - jmethodID GetStaticMethodID(jclass clazz, const char* name, const char* sig) - { return functions->GetStaticMethodID(this, clazz, name, sig); } - -#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ - _jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \ - ...) \ - { \ - _jtype result; \ - va_list args; \ - va_start(args, methodID); \ - result = functions->CallStatic##_jname##MethodV(this, clazz, \ - methodID, args); \ - va_end(args); \ - return result; \ - } -#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ - _jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \ - va_list args) \ - { return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \ - args); } -#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \ - _jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \ - jvalue* args) \ - { return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \ - args); } - -#define CALL_STATIC_TYPE(_jtype, _jname) \ - CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ - CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ - CALL_STATIC_TYPE_METHODA(_jtype, _jname) - - CALL_STATIC_TYPE(jobject, Object) - CALL_STATIC_TYPE(jboolean, Boolean) - CALL_STATIC_TYPE(jbyte, Byte) - CALL_STATIC_TYPE(jchar, Char) - CALL_STATIC_TYPE(jshort, Short) - CALL_STATIC_TYPE(jint, Int) - CALL_STATIC_TYPE(jlong, Long) - CALL_STATIC_TYPE(jfloat, Float) - CALL_STATIC_TYPE(jdouble, Double) - - void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...) - { - va_list args; - va_start(args, methodID); - functions->CallStaticVoidMethodV(this, clazz, methodID, args); - va_end(args); - } - void CallStaticVoidMethodV(jclass clazz, jmethodID methodID, va_list args) - { functions->CallStaticVoidMethodV(this, clazz, methodID, args); } - void CallStaticVoidMethodA(jclass clazz, jmethodID methodID, jvalue* args) - { functions->CallStaticVoidMethodA(this, clazz, methodID, args); } - - jfieldID GetStaticFieldID(jclass clazz, const char* name, const char* sig) - { return functions->GetStaticFieldID(this, clazz, name, sig); } - - jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticObjectField(this, clazz, fieldID); } - jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticBooleanField(this, clazz, fieldID); } - jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticByteField(this, clazz, fieldID); } - jchar GetStaticCharField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticCharField(this, clazz, fieldID); } - jshort GetStaticShortField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticShortField(this, clazz, fieldID); } - jint GetStaticIntField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticIntField(this, clazz, fieldID); } - jlong GetStaticLongField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticLongField(this, clazz, fieldID); } - jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticFloatField(this, clazz, fieldID); } - jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) - { return functions->GetStaticDoubleField(this, clazz, fieldID); } - - void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) - { functions->SetStaticObjectField(this, clazz, fieldID, value); } - void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) - { functions->SetStaticBooleanField(this, clazz, fieldID, value); } - void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) - { functions->SetStaticByteField(this, clazz, fieldID, value); } - void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) - { functions->SetStaticCharField(this, clazz, fieldID, value); } - void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) - { functions->SetStaticShortField(this, clazz, fieldID, value); } - void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) - { functions->SetStaticIntField(this, clazz, fieldID, value); } - void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) - { functions->SetStaticLongField(this, clazz, fieldID, value); } - void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) - { functions->SetStaticFloatField(this, clazz, fieldID, value); } - void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) - { functions->SetStaticDoubleField(this, clazz, fieldID, value); } - - jstring NewString(const jchar* unicodeChars, jsize len) - { return functions->NewString(this, unicodeChars, len); } - - jsize GetStringLength(jstring string) - { return functions->GetStringLength(this, string); } - - const jchar* GetStringChars(jstring string, jboolean* isCopy) - { return functions->GetStringChars(this, string, isCopy); } - - void ReleaseStringChars(jstring string, const jchar* chars) - { functions->ReleaseStringChars(this, string, chars); } - - jstring NewStringUTF(const char* bytes) - { return functions->NewStringUTF(this, bytes); } - - jsize GetStringUTFLength(jstring string) - { return functions->GetStringUTFLength(this, string); } - - const char* GetStringUTFChars(jstring string, jboolean* isCopy) - { return functions->GetStringUTFChars(this, string, isCopy); } - - void ReleaseStringUTFChars(jstring string, const char* utf) - { functions->ReleaseStringUTFChars(this, string, utf); } - - jsize GetArrayLength(jarray array) - { return functions->GetArrayLength(this, array); } - - jobjectArray NewObjectArray(jsize length, jclass elementClass, - jobject initialElement) - { return functions->NewObjectArray(this, length, elementClass, - initialElement); } - - jobject GetObjectArrayElement(jobjectArray array, jsize index) - { return functions->GetObjectArrayElement(this, array, index); } - - void SetObjectArrayElement(jobjectArray array, jsize index, jobject value) - { functions->SetObjectArrayElement(this, array, index, value); } - - jbooleanArray NewBooleanArray(jsize length) - { return functions->NewBooleanArray(this, length); } - jbyteArray NewByteArray(jsize length) - { return functions->NewByteArray(this, length); } - jcharArray NewCharArray(jsize length) - { return functions->NewCharArray(this, length); } - jshortArray NewShortArray(jsize length) - { return functions->NewShortArray(this, length); } - jintArray NewIntArray(jsize length) - { return functions->NewIntArray(this, length); } - jlongArray NewLongArray(jsize length) - { return functions->NewLongArray(this, length); } - jfloatArray NewFloatArray(jsize length) - { return functions->NewFloatArray(this, length); } - jdoubleArray NewDoubleArray(jsize length) - { return functions->NewDoubleArray(this, length); } - - jboolean* GetBooleanArrayElements(jbooleanArray array, jboolean* isCopy) - { return functions->GetBooleanArrayElements(this, array, isCopy); } - jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy) - { return functions->GetByteArrayElements(this, array, isCopy); } - jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy) - { return functions->GetCharArrayElements(this, array, isCopy); } - jshort* GetShortArrayElements(jshortArray array, jboolean* isCopy) - { return functions->GetShortArrayElements(this, array, isCopy); } - jint* GetIntArrayElements(jintArray array, jboolean* isCopy) - { return functions->GetIntArrayElements(this, array, isCopy); } - jlong* GetLongArrayElements(jlongArray array, jboolean* isCopy) - { return functions->GetLongArrayElements(this, array, isCopy); } - jfloat* GetFloatArrayElements(jfloatArray array, jboolean* isCopy) - { return functions->GetFloatArrayElements(this, array, isCopy); } - jdouble* GetDoubleArrayElements(jdoubleArray array, jboolean* isCopy) - { return functions->GetDoubleArrayElements(this, array, isCopy); } - - void ReleaseBooleanArrayElements(jbooleanArray array, jboolean* elems, - jint mode) - { functions->ReleaseBooleanArrayElements(this, array, elems, mode); } - void ReleaseByteArrayElements(jbyteArray array, jbyte* elems, - jint mode) - { functions->ReleaseByteArrayElements(this, array, elems, mode); } - void ReleaseCharArrayElements(jcharArray array, jchar* elems, - jint mode) - { functions->ReleaseCharArrayElements(this, array, elems, mode); } - void ReleaseShortArrayElements(jshortArray array, jshort* elems, - jint mode) - { functions->ReleaseShortArrayElements(this, array, elems, mode); } - void ReleaseIntArrayElements(jintArray array, jint* elems, - jint mode) - { functions->ReleaseIntArrayElements(this, array, elems, mode); } - void ReleaseLongArrayElements(jlongArray array, jlong* elems, - jint mode) - { functions->ReleaseLongArrayElements(this, array, elems, mode); } - void ReleaseFloatArrayElements(jfloatArray array, jfloat* elems, - jint mode) - { functions->ReleaseFloatArrayElements(this, array, elems, mode); } - void ReleaseDoubleArrayElements(jdoubleArray array, jdouble* elems, - jint mode) - { functions->ReleaseDoubleArrayElements(this, array, elems, mode); } - - void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, - jboolean* buf) - { functions->GetBooleanArrayRegion(this, array, start, len, buf); } - void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, - jbyte* buf) - { functions->GetByteArrayRegion(this, array, start, len, buf); } - void GetCharArrayRegion(jcharArray array, jsize start, jsize len, - jchar* buf) - { functions->GetCharArrayRegion(this, array, start, len, buf); } - void GetShortArrayRegion(jshortArray array, jsize start, jsize len, - jshort* buf) - { functions->GetShortArrayRegion(this, array, start, len, buf); } - void GetIntArrayRegion(jintArray array, jsize start, jsize len, - jint* buf) - { functions->GetIntArrayRegion(this, array, start, len, buf); } - void GetLongArrayRegion(jlongArray array, jsize start, jsize len, - jlong* buf) - { functions->GetLongArrayRegion(this, array, start, len, buf); } - void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, - jfloat* buf) - { functions->GetFloatArrayRegion(this, array, start, len, buf); } - void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, - jdouble* buf) - { functions->GetDoubleArrayRegion(this, array, start, len, buf); } - - void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, - const jboolean* buf) - { functions->SetBooleanArrayRegion(this, array, start, len, buf); } - void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, - const jbyte* buf) - { functions->SetByteArrayRegion(this, array, start, len, buf); } - void SetCharArrayRegion(jcharArray array, jsize start, jsize len, - const jchar* buf) - { functions->SetCharArrayRegion(this, array, start, len, buf); } - void SetShortArrayRegion(jshortArray array, jsize start, jsize len, - const jshort* buf) - { functions->SetShortArrayRegion(this, array, start, len, buf); } - void SetIntArrayRegion(jintArray array, jsize start, jsize len, - const jint* buf) - { functions->SetIntArrayRegion(this, array, start, len, buf); } - void SetLongArrayRegion(jlongArray array, jsize start, jsize len, - const jlong* buf) - { functions->SetLongArrayRegion(this, array, start, len, buf); } - void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, - const jfloat* buf) - { functions->SetFloatArrayRegion(this, array, start, len, buf); } - void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, - const jdouble* buf) - { functions->SetDoubleArrayRegion(this, array, start, len, buf); } - - jint RegisterNatives(jclass clazz, const JNINativeMethod* methods, - jint nMethods) - { return functions->RegisterNatives(this, clazz, methods, nMethods); } - - jint UnregisterNatives(jclass clazz) - { return functions->UnregisterNatives(this, clazz); } - - jint MonitorEnter(jobject obj) - { return functions->MonitorEnter(this, obj); } - - jint MonitorExit(jobject obj) - { return functions->MonitorExit(this, obj); } - - jint GetJavaVM(JavaVM** vm) - { return functions->GetJavaVM(this, vm); } - - void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf) - { functions->GetStringRegion(this, str, start, len, buf); } - - void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf) - { return functions->GetStringUTFRegion(this, str, start, len, buf); } - - void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) - { return functions->GetPrimitiveArrayCritical(this, array, isCopy); } - - void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) - { functions->ReleasePrimitiveArrayCritical(this, array, carray, mode); } - - const jchar* GetStringCritical(jstring string, jboolean* isCopy) - { return functions->GetStringCritical(this, string, isCopy); } - - void ReleaseStringCritical(jstring string, const jchar* carray) - { functions->ReleaseStringCritical(this, string, carray); } - - jweak NewWeakGlobalRef(jobject obj) - { return functions->NewWeakGlobalRef(this, obj); } - - void DeleteWeakGlobalRef(jweak obj) - { functions->DeleteWeakGlobalRef(this, obj); } - - jboolean ExceptionCheck() - { return functions->ExceptionCheck(this); } - - jobject NewDirectByteBuffer(void* address, jlong capacity) - { return functions->NewDirectByteBuffer(this, address, capacity); } - - void* GetDirectBufferAddress(jobject buf) - { return functions->GetDirectBufferAddress(this, buf); } - - jlong GetDirectBufferCapacity(jobject buf) - { return functions->GetDirectBufferCapacity(this, buf); } - - /* added in JNI 1.6 */ - jobjectRefType GetObjectRefType(jobject obj) - { return functions->GetObjectRefType(this, obj); } -#endif /*__cplusplus*/ -}; - - -/* - * JNI invocation interface. - */ -struct JNIInvokeInterface { - void* reserved0; - void* reserved1; - void* reserved2; - - jint (*DestroyJavaVM)(JavaVM*); - jint (*AttachCurrentThread)(JavaVM*, JNIEnv**, void*); - jint (*DetachCurrentThread)(JavaVM*); - jint (*GetEnv)(JavaVM*, void**, jint); - jint (*AttachCurrentThreadAsDaemon)(JavaVM*, JNIEnv**, void*); -}; - -/* - * C++ version. - */ -struct _JavaVM { - const struct JNIInvokeInterface* functions; - -#if defined(__cplusplus) - jint DestroyJavaVM() - { return functions->DestroyJavaVM(this); } - jint AttachCurrentThread(JNIEnv** p_env, void* thr_args) - { return functions->AttachCurrentThread(this, p_env, thr_args); } - jint DetachCurrentThread() - { return functions->DetachCurrentThread(this); } - jint GetEnv(void** env, jint version) - { return functions->GetEnv(this, env, version); } - jint AttachCurrentThreadAsDaemon(JNIEnv** p_env, void* thr_args) - { return functions->AttachCurrentThreadAsDaemon(this, p_env, thr_args); } -#endif /*__cplusplus*/ -}; - -struct JavaVMAttachArgs { - jint version; /* must be >= JNI_VERSION_1_2 */ - const char* name; /* NULL or name of thread as modified UTF-8 str */ - jobject group; /* global ref of a ThreadGroup object, or NULL */ -}; -typedef struct JavaVMAttachArgs JavaVMAttachArgs; - -/* - * JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no - * longer supported.) - */ -typedef struct JavaVMOption { - const char* optionString; - void* extraInfo; -} JavaVMOption; - -typedef struct JavaVMInitArgs { - jint version; /* use JNI_VERSION_1_2 or later */ - - jint nOptions; - JavaVMOption* options; - jboolean ignoreUnrecognized; -} JavaVMInitArgs; - -#ifdef __cplusplus -extern "C" { -#endif -/* - * VM initialization functions. - * - * Note these are the only symbols exported for JNI by the VM. - */ -jint JNI_GetDefaultJavaVMInitArgs(void*); -jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*); -jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*); - -#define JNIIMPORT -#define JNIEXPORT __attribute__ ((visibility ("default"))) -#define JNICALL - -/* - * Prototypes for functions exported by loadable shared libs. These are - * called by JNI, not provided by JNI. - */ -JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved); -JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved); - -#ifdef __cplusplus -} -#endif - - -/* - * Manifest constants. - */ -#define JNI_FALSE 0 -#define JNI_TRUE 1 - -#define JNI_VERSION_1_1 0x00010001 -#define JNI_VERSION_1_2 0x00010002 -#define JNI_VERSION_1_4 0x00010004 -#define JNI_VERSION_1_6 0x00010006 - -#define JNI_OK (0) /* no error */ -#define JNI_ERR (-1) /* generic error */ -#define JNI_EDETACHED (-2) /* thread detached from the VM */ -#define JNI_EVERSION (-3) /* JNI version error */ - -#define JNI_COMMIT 1 /* copy content, do not free buffer */ -#define JNI_ABORT 2 /* free buffer w/o copying back */ - -#endif /* JNI_H_ */ diff --git a/packages/myddas/sqlite3/src/Android/local.properties b/packages/myddas/sqlite3/src/Android/local.properties deleted file mode 100644 index 0bf9e3e43..000000000 --- a/packages/myddas/sqlite3/src/Android/local.properties +++ /dev/null @@ -1,10 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. - -# location of the SDK. This is only used by Ant -# For customization when using a Version Control System, please read the -# header note. -sdk.dir=/home/dan/adt-bundle-linux-x86-20131030/sdk/ diff --git a/packages/myddas/sqlite3/src/Android/proguard-project.txt b/packages/myddas/sqlite3/src/Android/proguard-project.txt deleted file mode 100644 index f2fe1559a..000000000 --- a/packages/myddas/sqlite3/src/Android/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/packages/myddas/sqlite3/src/Android/project.properties b/packages/myddas/sqlite3/src/Android/project.properties deleted file mode 100644 index 4ab125693..000000000 --- a/packages/myddas/sqlite3/src/Android/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-19 diff --git a/packages/myddas/sqlite3/src/Android/res/drawable-hdpi/ic_launcher.png b/packages/myddas/sqlite3/src/Android/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 96a442e5b8e9394ccf50bab9988cb2316026245d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9397 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 diff --git a/packages/myddas/sqlite3/src/Android/res/drawable-mdpi/ic_launcher.png b/packages/myddas/sqlite3/src/Android/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 359047dfa4ed206e41e2354f9c6b307e713efe32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5237 zcmV-*6pHJKP)!xJWW@nmR0Ns^Wrk)72_X;&VM@qLNZyn;-h1m-)j4PH{!#b7fObo=TF+Xw z)_t{JRqgNW{e9m)=MZ*rJl6A%IHK!gcqM)U)>TjF8ytMTRLpN39jns9J?@oOe47l4 z1dw7d06;*nuu_+V$6Qs4K>#PCRHVFExV^duw#+4>?(j) z*AHP%*L5@qEpM#j?*@5nOq@HlBR^5M@^_J9)U!&MV7N?QAAfFbdJaGWPgRws)6~+R z-NrZmx0V*7Od$!{dkY1w*wll3j_1b``)C%NHS6N>yBU998+?y%)4SU2YA} zA%$NKSGVi)4!sVH=l1lla~XcBLKrfnO2~CXCa>$GlX_p?dYsM`3%)hidhs()bzlDL zr7zEG>kK#SwpW`1YyR;!pa1&-`0t?)V)3FnK7V~pCo%hYIQUj+f?7Oh#@-(|a?XKA zr;?n->{Mx?{fOYn3n4;UD5a5kBx9Z>DQ1SETOzUjjZ`HF0&e`i-6T<17qM|ec7?fBc z;0k&%hz+o?+KMG>1)PSqUSqTR@!luCa_YiGo3TkPUp^w8T}r$YFf$gPyy|ZYU`={9 z3c4MNG|FgE6ETxVuw_~St-lefEMgF+NTdzZD8wWJ0s<69@frs3IxH*_A4`(dIZhJT z)TwApTxD36oOSS>-?;UKV^n{)k!mFpfWRL3*Rxl@V_bS?f`4@I!*C2lX%(H}L=`CT z0BxGtLQ@`yX#0U)3`bO@9NHBjM^*Gw64K=(1QdKEK*p+u<&qTSoUzKhfO`4Wz>@z)uK^Aw6m!k{QPq@f~bd?t)6?} z1bJ=k7!E&fDxUmP-(QVQ?F@i8a-dv4%Gg64haX`yNv^E%Ea<=YJ4SdqH4e{1~Sk?qbu|M;*f zbqpYh(szvQ9ev=Amrj8q0@9+|SbxTQw)=Lr&Hm@e_hY2mXXchai5dBmusvCYf%>!X zK>#8PKtTjx&+y*EIR|SkT*`=|2>VPq0kb=fM~F#u|GG<9sj?zc-#-8BqmC*-%N5t% z3v1um65bJjO9}`JV*qzjs9O-*vCma1qq%z0=Thg*sPtm8u4CiyU5H^JCTU0mH2?_M zGn{jci{Y)p`kvomV&MR6*th{{opqpyh3Ux4m)!GykUSWKMk@t>>SyNTwj2L%XZ{Nn z>Xv_j0zm+HA-wSFCJ4n;tqux{Z<*M!+ghP`mh}};q{({$d;y{&M#518E{~{H2e(KJ+~I! z(QA0${wLzt8F#!r1DoX%bYVIIT!6Y1 zJctN_2;>9AahjEz5Cm@p&;a2*ykj`$0UrSH$QJ^n3By@S!UCJh5jS2|HIuruyXF34 zRDv0v?9yEOYVFWR0jftU~yzAQIFKu_~N!vxLSpD zIxEmBpAwnRC3gEyg%Yon(xeEA2t*11fhfB~8i^HvMIcQOp5dF9V>l7DZ+tS31TC`?6B2!P-{Ai`NS%8sfWFCh_# z2!sJ<26G0;dxnUBNT3Wrj-j+52u(2zc*4ieoxAxfi_hFMD8$Dt*t4hHU+Z6a>y4`) z-dgRJ&wT2GICjQeJ24|X4P=?_kA+q7QY|L{F) z>E#!CslTU!sFuPzhBSJAZ4?NAGFdr600O~tQ;`JDd9Vkv#1X>KptUV8Q)hHgp)4=n zf7k1aF8a|v_e`5zKCDz~Nuz3ARYohScS~Kpws!0=fL0XBO0`T-YycqYn}yY@ZV?g2 zlnDnM86|@t(hM=mC6W&G)j}8N_Fwtr#>s`2R4qD9xuZ_o&BU=o5&`up5LX5DnnxN7 z(!|510_PdtJ9u$`Fq8(A0!#>KLogu_1c1^6@0sdRitRngzWe^er2PiAMIqpkE7Xj4 zqSD0i@PNn2cHaUJ;)tnGEM^?Y2OX%5fOPNhi#0IY;la!zy_Gm@B#Lw#(Mo_^%= znu44{7-|HeMy{k$Y%?&%Kq&>KG_*4CK85oRio&-@sE4y2Y3h;2*%j9ragC&24JaC` z`!uzlS%RjYWaMg=C2{s!Ax`QU03w3c0Yn(2{;azYNJdU3mn!CrxI&4*JCC^T#}y}2 zA`QzFa=EsmQ0RGvftbU zQ>{c90A|-98)Xj4nT0b0yyJf8t%xIraRd)QQ&z*I6o?d@PmrXe$eT_q-0f@}wCCAq zEl$Ss8*j&&jkjWZGSHg|Kx;aNPWFa9~0$jGSbWOU>XjH6xDc0w(iTEtcE6dO3#5TC{ScvW=I(b=Nv*)M5VtC-7j0@OiMO};u|K_aA+ua&Wy|G z0O?p6>sL7#>4bE^@$`cedW&;pHYGbq)cE=gVUygN~?!_hF|0teV`9}~ml+s!M!x_o7(s*;* zCVc-VU&If8em*{M)JJgGyiZ}QGSUDFC<*}~u!v@1)yzPXBMKoDa!^zNBmjHLN~pCo z86Fi-BjwE?n=_NmIA?K7liV3M;v_;xTNl23?ow=ga}EA*-%{NFA9)Ej6(HYiJs85m`CL9ANNz_7Wfw>}W{H&o zhy)^>0cdZXg2B-WvL1};5P}FJQvqpeDFK{}*W_F4Q?l}yJ$-+C<-Fxs|HfnZ?SC!9 z1CQT|j+S@fx%Cg={YRgO&z2Z>i~diz*O?*BnAkIbU{QcAP}Z33z=$xNR5+KgfMs35xDG&i*Vb0Kg44zZ^zZ& zc>uXE4-p1))`B-&1MC}R(r5-n0MAaC)!S!3D{E#4D+*c5&ME_7bO-`vnhuJ0%rG^y z*MSI{U{o_J!WqGvFVAW?BdzlmMhBQRZ2?B+Z$U21!?_gN1W=^F4PGQ^jHW1{`Cb9o zLx~8DXBkZ|AhymqMH-oHxQxU~>&7f9WD8o#QYOvxW(yKUdVH3~XXbxdwyFjxt+lAv zZaWSag=@ z=8P$&K}1lbY?iX@ee4?s0wKUBJ964=H$0STaA3T?n~R$9CTTo$W*+}*eEXdRL>ghx z0ulvhz0Z>9A)>e;5?WE{3wn~(Mxl@k5Z8vY60)g)Z7AM`NMj7L0~nqG?*MV$0cj#* zg?t%+Zb&IZs~iSLH{&P2T8vGbH$W*3fW~XQxiirODk4xy!&-;m-f<)T^zbbx6J$2bI!+g&Q(Tb>mTpfw(MhPbbX*24YD+xC~pjzlg4B?I0>ZG1eo;$GZ-@3q)Ayc(TT%9uB8CcO9K>t$rJ4+!Ga!{2blb3*{mJ?rAx;e_@g zW=}sb8SURhsg02gkr06Qo;))H{@ois2J0*E-a_ku;$#FwS}J2z^z{y5!Tf{u-m?$! zW7XmPw~xK}Y|U*DV-zVxM2Z?xn6(ROnxdy?JIXW%Qzy=WHv^~-wPRiPJ(xPPjP?m_ zU@!3AH)Mt2y@NuFGk%)cvT4gxH~;vV!~gKarE2vv&(f8P@Ag++xft8kE4o&xvN3^V zhgKTPzIFc&iMV*lvDmVC6ReMr3kzh>qKs;xT2uwI^KCQwiCuxGcI>;nX1mYH6|D_I zV?e$kJ`M5;L7M=zY84}cF$$#|Dx-Bwp4xT+U;&*D<@0j8tMo%x5%Tg?~5R?T=3cv%@lt|5rbf!U~$$KWHR3?Xk zu&I|c5%P}XIIb@4XrJ=aC`y!W*}^Y88R7A}hVa+MJ05U+?`P+M8rvjM6j3edroqA2 zxm4Kuj7oLnm$`fxbar$}K3^bGfWT*$Wd5R*hEfJ52%w-LATTp*YNZ}ksTNg7J=bnd z-Pkqa!RO=D(kYB&|Wjqg0rvF8kum{NfucTYqrP z`5U%u**G!G6{S=zQMp`3K3_yWUyzoz^2Q(tmC>3+s5Oq`4(BY=)S@2MFgiNo;u?&k zg`0}`37-~9P0%vHiA@+H2!cEy8o#>wuOImB)G_Pj7yce!TXGVt#ORn z(=jFB*q2Zp6$}lGp?}+$um^#4QjKaSEI75c$z6AAYL348>#uKEccl>fFbuUZ0R$d} zZ~}6sT!$|qC`YPurgrtQ76=RC$YS~T-}$t1r_YJ6x+vSq`|xwOl@gGLU>BhcFBv~FMie-ahi$Rz-LINpu0Hu~Za`}LYEdk2y0hQVU6k7}mB|~9e!x(}I6ii4k;VvE0 z?|KG+Oj%0Bi3m(dlp;$c5Cu`1CM@ypLV(%bX9 zr_WVSKiJ10x1!vdPr`gLXF?@f1r%~#N8UkH?XgO1p%e>?-DLnfb z=86?7j~f~sKElT8lSw^&-{|PJ_Z)D@o-cw6^yvN1aY@hS38meM!r|M7s_XW%93Aak za$IUh=gpcu=jzR`4$^18^F8_11#h4-#Jd^}{s&{CB`(>qac=+s03~!qSaf7zbY(hY za%Ew3WdJfTF)=MLIW00WR4_R@Gcr0eGA%GSIxsM(l48sN001R)MObuXVRU6WZEs|0 vW_bWIFflPLFgYzTHdHV-Ix;spGd3+SH##sdcWUue00000NkvXXu0mjfB?gph diff --git a/packages/myddas/sqlite3/src/Android/res/drawable-xhdpi/ic_launcher.png b/packages/myddas/sqlite3/src/Android/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 71c6d760f05183ef8a47c614d8d13380c8528499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14383 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 diff --git a/packages/myddas/sqlite3/src/Android/res/layout/main.xml b/packages/myddas/sqlite3/src/Android/res/layout/main.xml deleted file mode 100644 index a569727f5..000000000 --- a/packages/myddas/sqlite3/src/Android/res/layout/main.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - -