:more db stuff
This commit is contained in:
parent
d3370ee141
commit
6c1d3d1a95
11
C/errors.c
11
C/errors.c
@ -1001,6 +1001,15 @@ static Int read_exception(USES_REGS1) {
|
||||
return Yap_unify(ARG2, rc);
|
||||
}
|
||||
|
||||
static Int print_exception(USES_REGS1) {
|
||||
yap_error_descriptor_t *t = AddressOfTerm(Deref(ARG1));
|
||||
printErr(t);
|
||||
// Yap_DebugPlWriteln(rc);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static Int query_exception(USES_REGS1) {
|
||||
const char *query;
|
||||
Term t;
|
||||
@ -1022,6 +1031,7 @@ static Int query_exception(USES_REGS1) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static Int drop_exception(USES_REGS1) {
|
||||
yap_error_descriptor_t *t = AddressOfTerm(Deref(ARG1));
|
||||
free(t);
|
||||
@ -1226,6 +1236,7 @@ static Int is_predicate_indicator(USES_REGS1) {
|
||||
|
||||
void Yap_InitErrorPreds(void) {
|
||||
CACHE_REGS
|
||||
Yap_InitCPred("$print_exception", 1, print_exception, 0);
|
||||
Yap_InitCPred("$reset_exception", 1, reset_exception, 0);
|
||||
Yap_InitCPred("$new_exception", 1, new_exception, 0);
|
||||
Yap_InitCPred("$get_exception", 1, get_exception, 0);
|
||||
|
7
C/text.c
7
C/text.c
@ -437,12 +437,15 @@ unsigned char *Yap_readText(seq_tv_t *inp USES_REGS) {
|
||||
LOCAL_Error_TYPE = TYPE_ERROR_TEXT;
|
||||
}
|
||||
}
|
||||
LOCAL_ActiveError->errorRawTerm = MkUStringTerm(inp->val.uc);
|
||||
}
|
||||
if (LOCAL_Error_TYPE != YAP_NO_ERROR) {
|
||||
if (inp->val.uc != NULL) {
|
||||
LOCAL_ActiveError->errorRawTerm = MkUStringTerm(inp->val.uc);
|
||||
|
||||
}
|
||||
Yap_ThrowError(LOCAL_Error_TYPE, LOCAL_ActiveError->errorRawTerm, "Converting to text from term ");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsAtomTerm(inp->val.t) && inp->type & YAP_STRING_ATOM) {
|
||||
// this is a term, extract to a buffer, and representation is wide
|
||||
|
@ -726,9 +726,6 @@ if (!result) {
|
||||
}
|
||||
|
||||
PredEntry *YAPQuery::rewriteUndefQuery() {
|
||||
Term ts[2];
|
||||
ts[0] = CurrentModule;
|
||||
ts[1] = goal;
|
||||
ARG1 = goal = Yap_SaveTerm(Yap_MkApplTerm(FunctorCall
|
||||
, 1, &goal));
|
||||
return ap = PredCall;
|
||||
|
36
H/TermExt.h
36
H/TermExt.h
@ -294,11 +294,19 @@ INLINE_ONLY Term __MkStringTerm(const char *s USES_REGS);
|
||||
|
||||
INLINE_ONLY Term __MkStringTerm(const char *s USES_REGS) {
|
||||
Term t = AbsAppl(HR);
|
||||
size_t sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
strcpy((char *)(HR + 2), (const char *)s);
|
||||
HR[2 + sz] = EndSpecials;
|
||||
size_t sz;
|
||||
if ((s[0] == '\0')) {
|
||||
sz = sizeof(CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
HR[2] = 0;
|
||||
} else {
|
||||
sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
strcpy((char *)(HR + 2), (const char *)s);
|
||||
}
|
||||
HR[2 + sz] = EndSpecials;
|
||||
HR += 3 + sz;
|
||||
return t;
|
||||
}
|
||||
@ -311,11 +319,19 @@ __MkUStringTerm(const unsigned char *s USES_REGS);
|
||||
INLINE_ONLY Term
|
||||
__MkUStringTerm(const unsigned char *s USES_REGS) {
|
||||
Term t = AbsAppl(HR);
|
||||
size_t sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
strcpy((char *)(HR + 2), (const char *)s);
|
||||
HR[2 + sz] = EndSpecials;
|
||||
size_t sz;
|
||||
if ((s[0] == '\0')) {
|
||||
sz = sizeof(CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
HR[2] = 0;
|
||||
} else {
|
||||
sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL);
|
||||
HR[0] = (CELL)FunctorString;
|
||||
HR[1] = (CELL)sz;
|
||||
strcpy((char *)(HR + 2), (const char *)s);
|
||||
}
|
||||
HR[2 + sz] = EndSpecials;
|
||||
HR += 3 + sz;
|
||||
return t;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
*
|
||||
*/
|
||||
:- module(gensym, [
|
||||
init_gensym/1,
|
||||
gensym/2,
|
||||
reset_gensym/1,
|
||||
reset_gensym/0
|
||||
@ -26,6 +27,9 @@
|
||||
|
||||
:- dynamic gensym_key/2.
|
||||
|
||||
init_gensym(Key) :-
|
||||
assert(gensym_key(Atom,0) ).
|
||||
|
||||
gensym(Atom, New) :-
|
||||
retract(gensym_key(Atom,Id)), !,
|
||||
atomic_concat(Atom,Id,New),
|
||||
|
@ -473,7 +473,7 @@ static void InitStdStreams(void) {
|
||||
#if USE_READLINE
|
||||
if (GLOBAL_Stream[StdInStream].status & Tty_Stream_f &&
|
||||
GLOBAL_Stream[StdOutStream].status & Tty_Stream_f &&
|
||||
GLOBAL_Stream[StdErrStream].status & Tty_Stream_f && !Yap_embedded) {
|
||||
GLOBAL_Stream[StdErrStream].status & Tty_Stream_f && !Yap_Embedded) {
|
||||
Yap_InitReadline(TermTrue);
|
||||
}
|
||||
#endif
|
||||
|
@ -280,7 +280,7 @@ bool Yap_ReadlineOps(StreamDesc *s) {
|
||||
|
||||
bool Yap_InitReadline(Term enable) {
|
||||
// don't call readline within emacs
|
||||
if (Yap_embedded)
|
||||
if (Yap_Embedded)
|
||||
return false;
|
||||
if (!(GLOBAL_Stream[StdInStream].status & Tty_Stream_f) ||
|
||||
getenv("INSIDE_EMACS") || enable != TermTrue) {
|
||||
@ -450,7 +450,7 @@ int Yap_ReadlineForSIGINT(void) {
|
||||
|
||||
static Int has_readline(USES_REGS1) {
|
||||
#if USE_READLINE
|
||||
if (!Yap_embedded) {
|
||||
if (!Yap_Embedded) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -20,18 +20,18 @@
|
||||
set_property(GLOBAL
|
||||
APPEND PROPERTY COMPILE_DEFINITIONS -DMYDDAS_MYSQL=1)
|
||||
if (WIN32)
|
||||
add_library(Yapmysql OBJECT ${MYSQL_SOURCES})
|
||||
add_library(YAPmysql OBJECT ${MYSQL_SOURCES})
|
||||
else()
|
||||
add_lib(Yapmysql ${MYSQL_SOURCES})
|
||||
target_link_libraries(Yapmysql ${MYSQL_LIBRARIES} libYap)
|
||||
install(TARGETS Yapmysql
|
||||
add_lib(YAPmysql ${MYSQL_SOURCES})
|
||||
target_link_libraries(YAPmysql ${MYSQL_LIBRARIES} libYap)
|
||||
install(TARGETS YAPmysql
|
||||
RUNTIME DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
ARCHIVE DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
)
|
||||
endif()
|
||||
include_directories(${MYSQL_INCLUDE_DIR} ..)
|
||||
set_target_properties(Yapmysql PROPERTIES
|
||||
set_target_properties(YAPmysql PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
PREFIX ""
|
||||
)
|
||||
|
@ -13,11 +13,11 @@ if (ODBC_FOUND)
|
||||
# ODBC_INCLUDE_DIRECTORIES, where to find sql.h
|
||||
# ODBC_LIBRARIES, the libraries to link against to use ODBC
|
||||
# ODBC_FOUND. If false, you cannot build anything that requires Odbc.
|
||||
add_lib(Yapodbc ${YAPODBC_SOURCES})
|
||||
target_link_libraries(Yapodbc libYap ${ODBC_LIBRARIES})
|
||||
add_lib(YAPodbc ${YAPODBC_SOURCES})
|
||||
target_link_libraries(YAPodbc libYap ${ODBC_LIBRARIES})
|
||||
include_directories (${ODBC_INCLUDE_DIRECTORIES} ..)
|
||||
|
||||
set_target_properties (Yapodbc PROPERTIES
|
||||
set_target_properties (YAPodbc PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
PREFIX ""
|
||||
)
|
||||
@ -28,7 +28,7 @@ set_target_properties (Yapodbc PROPERTIES
|
||||
-DMYDDAS_ODBC=1)
|
||||
|
||||
|
||||
install(TARGETS Yapodbc
|
||||
install(TARGETS YAPodbc
|
||||
LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
RUNTIME DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
ARCHIVE DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
|
@ -18,23 +18,23 @@
|
||||
#undef sqlite3
|
||||
#define DBMS(x) sqlite3_##x
|
||||
#define c_DBMS(x) c_sqlite3_##x
|
||||
#define NAME() 'libYapsqlite3'
|
||||
#define NAME() 'YAPsqlite3'
|
||||
#define MODULE() user
|
||||
#define INIT() init_sqlite3
|
||||
#elif defined( odbc )
|
||||
#undef odbc
|
||||
#define DBMS(x) odbc_##x
|
||||
#define c_DBMS(x) c_odbc_##x
|
||||
#define NAME() 'libYapodbc'
|
||||
#define NAME() 'YAPodbc'
|
||||
#define MODULE() user
|
||||
#define INIT() init_odbc
|
||||
#elif defined( postgres )
|
||||
#undef postgres
|
||||
#define DBMS(x) postgres_##x
|
||||
#define c_DBMS(x) c_postgres_##x
|
||||
#define NAME() 'libYappostgres'
|
||||
#define NAME() 'YAPpostgres'
|
||||
#define MODULE() user
|
||||
#define INIT() init_odbc
|
||||
#define INIT() init_postgres
|
||||
#endif
|
||||
|
||||
#if defined(DBMS)
|
||||
@ -71,7 +71,9 @@
|
||||
'$make_a_list'/2,
|
||||
'$write_or_not'/1
|
||||
]).
|
||||
% :- load_foreign_files( [NAME()], [], INIT()).
|
||||
#ifndef __ANDROID__
|
||||
:- load_foreign_files( [NAME()], [], INIT()).
|
||||
#endif
|
||||
|
||||
%--------------------------------------------------------
|
||||
% Public Predicates
|
||||
|
@ -55,7 +55,7 @@
|
||||
]).
|
||||
|
||||
|
||||
:- load_foreign_files( ['Yapmysql'], [], init_mysql).
|
||||
:- load_foreign_files( ['YAPmysql'], [], init_mysql).
|
||||
|
||||
|
||||
%--------------------------------------------------------
|
||||
|
@ -38,17 +38,19 @@
|
||||
% --------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
:- use_module(lists,[
|
||||
append/3,
|
||||
member/2
|
||||
]).
|
||||
|
||||
:- module(myddas_prolog2sql,[
|
||||
translate/3,
|
||||
queries_atom/2
|
||||
]).
|
||||
|
||||
|
||||
:- use_module(library(lists),[
|
||||
append/3,
|
||||
member/2
|
||||
]).
|
||||
|
||||
:- use_module(library(gensym)).
|
||||
|
||||
|
||||
:- use_module(myddas_prolog2sql_optimizer,[
|
||||
optimize_sql/2
|
||||
@ -1225,7 +1227,7 @@ column_atom(Number,List,Diff) :-
|
||||
append(X1,Diff,List).
|
||||
|
||||
|
||||
|
||||
#if SEPIA
|
||||
% --- gensym(Root,Symbol) ----------------------------------------------------
|
||||
%
|
||||
% SEPIA 3.2. version - other Prolog implementations provide gensym/2
|
||||
@ -1246,7 +1248,7 @@ gensym(Atom,Var) :-
|
||||
char_code(Var,NewCode),
|
||||
set_value(Atom,Var).
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
% --- auxiliary predicates (some of them may be built-in... --------------------
|
||||
|
||||
|
@ -14,10 +14,10 @@ if (PostgreSQL_FOUND)
|
||||
# PostgreSQL_INCLUDE_DIRS - Include directories for PostgreSQL
|
||||
# PostgreSQL_LIBRARY_DIRS - Link directories for PostgreSQL libraries
|
||||
# PostgreSQL_LIBRARIES - The PostgreSQL libraries.
|
||||
add_lib(Yappostgres ${YAPPOSTGRES_SOURCES})
|
||||
target_link_libraries(Yappostgres libYap ${PostgreSQL_LIBRARIES})
|
||||
add_lib(YAPpostgres ${YAPPOSTGRES_SOURCES})
|
||||
target_link_libraries(YAPpostgres libYap ${PostgreSQL_LIBRARIES})
|
||||
include_directories (${PostgreSQL_INCLUDE_DIRS} ..)
|
||||
set_target_properties (Yappostgres PROPERTIES
|
||||
set_target_properties (YAPpostgres PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
PREFIX ""
|
||||
)
|
||||
@ -27,7 +27,7 @@ set (MYDDAS_FLAGS ${MYDDAS_FLAGS} ON PARENT_SCOPE)
|
||||
set_property(GLOBAL APPEND PROPERTY COMPILE_DEFINITIONS
|
||||
-DMYDDAS_POSTGRES=1)
|
||||
|
||||
install(TARGETS Yappostgres
|
||||
install(TARGETS YAPpostgres
|
||||
LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
RUNTIME DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
ARCHIVE DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
|
@ -1,4 +1,4 @@
|
||||
message( " * Sqlite3 Data-Base (http://www.sqlite3ql.org), distributed with MYDDAS" )
|
||||
message( " * Sqlite3 Data-Base (http://www.sqlite3.org), distributed with MYDDAS" )
|
||||
|
||||
set (SQLITE_EXTRA
|
||||
chinook.db
|
||||
@ -35,23 +35,27 @@ add_definitions(-DSQLITE_ENABLE_FTS5=1 )
|
||||
SET_PROPERTY(DIRECTORY PROPERTY COMPILE_DEFINITIONS YAP_KERNEL=1 )
|
||||
|
||||
|
||||
add_library( Yapsqlite3 OBJECT
|
||||
if (ANDROID)
|
||||
add_library( YAPsqlite3 OBJECT
|
||||
${YAPSQLITE3_SOURCES} )
|
||||
|
||||
else()
|
||||
|
||||
if (NOT ANDROID)
|
||||
add_library( sqlite4YAP SHARED
|
||||
src/sqlite3.c)
|
||||
list(APPEND YAPSQLITE3_SOURCES src/sqlite3.c)
|
||||
|
||||
set_target_properties(sqlite4YAP
|
||||
|
||||
add_library( YAPsqlite3 SHARED
|
||||
${YAPSQLITE3_SOURCES})
|
||||
|
||||
set_target_properties(YAPsqlite3
|
||||
PROPERTIES
|
||||
# RPATH ${libdir} VERSION ${LIBYAPTAI_FULL_VERSION}
|
||||
# SOVERSION ${LIBYAPTAI_MAJOR_VERSION}.${LIBYAPTAI_MINOR_VERSION}
|
||||
POSITION_INDEPENDENT_CODE TRUE
|
||||
)
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
PREFIX ""
|
||||
)
|
||||
|
||||
|
||||
install(TARGETS sqlite4YAP
|
||||
install(TARGETS YAPsqlite3
|
||||
RUNTIME DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
ARCHIVE DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
LIBRARY DESTINATION ${YAP_INSTALL_DLLDIR}
|
||||
|
@ -36,7 +36,7 @@
|
||||
int i; \
|
||||
i = sqlite3_##f; \
|
||||
if (i != SQLITE_OK) { \
|
||||
Yap_Error(EVALUATION_ERROR_DBMS, t, "%s failed with status %d: %s\n", \
|
||||
Yap_ThrowError(EVALUATION_ERROR_DBMS, MkStringTerm(#f), "%s failed with status %d: %s\n", \
|
||||
#f, i, sqlite3_errmsg(db)); \
|
||||
} \
|
||||
}
|
||||
@ -46,7 +46,7 @@
|
||||
int i; \
|
||||
i = sqlite3_##f; \
|
||||
if (i != SQLITE_##x) { \
|
||||
fprintf(stderr, "%s failed with status %d: %s\n", #f, i, \
|
||||
Yap_ThrowError(EVALUATION_ERROR_DBMS, MkStringTerm(#f), "%s failed with status %d: %s\n", #f, i, \
|
||||
sqlite3_errmsg(db)); \
|
||||
exit(1); \
|
||||
} \
|
||||
@ -489,7 +489,7 @@ static Int c_sqlite3_row_terminate(USES_REGS1) {
|
||||
struct result_set *res_set = rs->res_set;
|
||||
sqlite3 *db = res_set->db;
|
||||
// no more data
|
||||
CALL_SQLITE(ARG1, finalize(res_set->stmt));
|
||||
CALL_SQLITE(Deref(ARG1), finalize(res_set->stmt));
|
||||
free(res_set);
|
||||
free(rs);
|
||||
return true;
|
||||
@ -667,7 +667,7 @@ static void Yap_InitBackMYDDAS_SQLITE3Preds(void) {
|
||||
// Yap_InitCPredBack("c_sqlite3_row", 3, 0, c_sqlite3_row_initialise,
|
||||
// c_sqlite3_row, c_sqlite3_row_terminate);
|
||||
Yap_InitCPred("c_sqlite3_row_initialise", 2, c_sqlite3_row_initialise, 0);
|
||||
Yap_InitCPred("c_sqlite3_row_terminate", 1, c_sqlite3_row_terminate, 0);
|
||||
Yap_InitCPred("c_sqlite3_row_terminate", 2, c_sqlite3_row_terminate, 0);
|
||||
Yap_InitCPredBack("c_sqlite3_row_get", 4, 0, c_sqlite3_row, c_sqlite3_row, 0);
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,8 @@ main_ :-
|
||||
main_ .
|
||||
|
||||
init :-
|
||||
db_open(sqlite3, '/data/user/0/pt.up.yap.yapdroid/files/Yap/chinook.db', _, _),
|
||||
% db_open(sqlite3, '/data/user/0/pt.up.yap.yapdroid/files/Yap/chinook.db', _, _),
|
||||
db_open(sqlite3, 'chinook.db', _, _),
|
||||
writeln('chinook has landed').
|
||||
|
||||
go :-
|
||||
@ -75,7 +76,6 @@ go :-
|
||||
writeln(X:Y).
|
||||
|
||||
go_cut0 :-
|
||||
start_low_level_trace,
|
||||
artists(X,Y),
|
||||
writeln(X:Y),
|
||||
!.
|
||||
|
@ -198,12 +198,13 @@ compose_message( halt, _Level) --> !,
|
||||
|
||||
% syntax error.
|
||||
compose_message(error(E, Exc), Level) -->
|
||||
{ '$show_consult_level'(LC) },
|
||||
{ '$show_consult_level'(LC), '$print_exception'(Exc)
|
||||
},
|
||||
location(error(E, Exc), Level, LC),
|
||||
main_message(error(E,Exc) , Level, LC ),
|
||||
c_goal( Exc, Level ),
|
||||
caller( Exc, Level ),
|
||||
extra_info( Exc, Level ),
|
||||
c_goal( error(E, Exc), Level ),
|
||||
caller( error(E, Exc), Level ),
|
||||
extra_info( error(E, Exc), Level ),
|
||||
!,
|
||||
[nl,nl].
|
||||
compose_message( false, _Level) --> !,
|
||||
@ -367,7 +368,7 @@ display_consulting( F, Level, _, LC) -->
|
||||
display_consulting(_F, _, _, _LC) -->
|
||||
[].
|
||||
|
||||
caller( error(_,Info), _) -->
|
||||
caller( Info, _) -->
|
||||
{ '$error_descriptor'(Info, Desc) },
|
||||
({ '$query_exception'(errorGoal, Desc, Call),
|
||||
Call = M:(H :- G)
|
||||
@ -381,7 +382,7 @@ caller( error(_,Info), _) -->
|
||||
->
|
||||
['~*|by ~w' - [10,Call]]
|
||||
;
|
||||
true
|
||||
[]
|
||||
),
|
||||
{ '$query_exception'(prologPredFile, Desc, File),
|
||||
File \= [],
|
||||
@ -397,7 +398,7 @@ caller( error(_,Info), _) -->
|
||||
caller( _, _) -->
|
||||
[].
|
||||
|
||||
c_goal( error(_,Info), Level ) -->
|
||||
c_goal( Info, Level ) -->
|
||||
{ '$error_descriptor'(Info, Desc) },
|
||||
{ '$query_exception'(errorFile, Desc, File),
|
||||
Func \= [],
|
||||
@ -980,6 +981,17 @@ Note: errors in the implementation of print_message/2 are very
|
||||
confusing to YAP (who will process the error?). So we write this small
|
||||
stub to ensure everything os ok
|
||||
|
||||
*/
|
||||
/*
|
||||
/*:- dynamic in/0.
|
||||
prolog:print_message(Severity, Msg) :-
|
||||
\+ in,
|
||||
assert(in),
|
||||
start_low_level_trace,
|
||||
( prolog:print_message(Severity, Msg), fail;
|
||||
stop_low_level_trace,
|
||||
retract(in)
|
||||
).*/
|
||||
*/
|
||||
prolog:print_message(Severity, Msg) :-
|
||||
(
|
||||
@ -995,7 +1007,7 @@ prolog:print_message(Severity, Msg) :-
|
||||
;
|
||||
Severity == silent
|
||||
->
|
||||
true
|
||||
[]
|
||||
;
|
||||
'$pred_exists'(portray_message(_,_),user),
|
||||
user:portray_message(Severity, Msg)
|
||||
@ -1045,7 +1057,7 @@ prolog:print_message(Severity, Term) :-
|
||||
prolog:print_message(_Severity, _Term) :-
|
||||
format(user_error,'failed to print ~w: ~w~n' ,[ _Severity, _Term]).
|
||||
|
||||
'$error_descriptor'( Info, Info ).
|
||||
'$error_descriptor'( error(_,Info), Info ).
|
||||
|
||||
|
||||
/**
|
||||
|
@ -138,7 +138,7 @@ undefined_query(G0, M0, Cut) :-
|
||||
'$handle_error'(Action,G0,M0)
|
||||
).
|
||||
|
||||
%:- '$undefp_handler'('$undefp'(_,_), prolog).
|
||||
:- '$undefp_handler'('$undefp'(_,_), prolog).
|
||||
|
||||
/** @pred unknown(- _O_,+ _N_)
|
||||
|
||||
|
Reference in New Issue
Block a user