boot
This commit is contained in:
parent
5ea47853ac
commit
66db3d53f8
@ -2109,16 +2109,16 @@ X_API int YAP_InitConsult(int mode, const char *fname, char *full, int *osnop) {
|
|||||||
int lvl = push_text_stack();
|
int lvl = push_text_stack();
|
||||||
if (mode == YAP_BOOT_MODE) {
|
if (mode == YAP_BOOT_MODE) {
|
||||||
mode = YAP_CONSULT_MODE;
|
mode = YAP_CONSULT_MODE;
|
||||||
}
|
}
|
||||||
char *bfp = Malloc(YAP_FILENAME_MAX + 1);
|
char *bfp = Malloc(YAP_FILENAME_MAX + 1);
|
||||||
bfp[0] = '\0';
|
bfp[0] = '\0';
|
||||||
if (fname == NULL || fname[0] == '\0') {
|
if (fname == NULL || fname[0] == '\0') {
|
||||||
fname = Yap_BOOTFILE;
|
fname = Yap_BOOTFILE;
|
||||||
}
|
}
|
||||||
if (fname) {
|
if (fname) {
|
||||||
fl = Yap_AbsoluteFile(fname, bfp, true);
|
fl = Yap_AbsoluteFile(fname, bfp, true);
|
||||||
if (!fl || !fl[0]) {
|
if (!fl || !fl[0]) {
|
||||||
pop_text_stack(lvl);
|
pop_text_stack(lvl);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
C/qlyr.c
2
C/qlyr.c
@ -614,7 +614,7 @@ static size_t read_bytes(FILE *stream, void *ptr, size_t sz) {
|
|||||||
size_t count = fread(ptr, 1, sz, stream);
|
size_t count = fread(ptr, 1, sz, stream);
|
||||||
if (count == sz)
|
if (count == sz)
|
||||||
return sz;
|
return sz;
|
||||||
if (feof(stream)) {
|
if (feof(stream)) {
|
||||||
PlIOError(PERMISSION_ERROR_INPUT_PAST_END_OF_STREAM, TermNil, "read_qly/3: expected %ld bytes got %ld", sz, count);
|
PlIOError(PERMISSION_ERROR_INPUT_PAST_END_OF_STREAM, TermNil, "read_qly/3: expected %ld bytes got %ld", sz, count);
|
||||||
return 0;
|
return 0;
|
||||||
} else if (ferror(stream)) {
|
} else if (ferror(stream)) {
|
||||||
|
48
C/yap-args.c
48
C/yap-args.c
@ -165,7 +165,6 @@ static void consult(const char *b_file USES_REGS) {
|
|||||||
Functor functor_query = Yap_MkFunctor(Yap_LookupAtom("?-"), 1);
|
Functor functor_query = Yap_MkFunctor(Yap_LookupAtom("?-"), 1);
|
||||||
Functor functor_command1 = Yap_MkFunctor(Yap_LookupAtom(":-"), 1);
|
Functor functor_command1 = Yap_MkFunctor(Yap_LookupAtom(":-"), 1);
|
||||||
Functor functor_compile2 = Yap_MkFunctor(Yap_LookupAtom("c_compile"), 1);
|
Functor functor_compile2 = Yap_MkFunctor(Yap_LookupAtom("c_compile"), 1);
|
||||||
Functor functor_bc = Yap_MkFunctor(Yap_LookupAtom("$bc"), 3);
|
|
||||||
|
|
||||||
/* consult boot.pl */
|
/* consult boot.pl */
|
||||||
char *full = malloc(YAP_FILENAME_MAX + 1);
|
char *full = malloc(YAP_FILENAME_MAX + 1);
|
||||||
@ -238,7 +237,7 @@ typedef struct config {
|
|||||||
const char **dll;
|
const char **dll;
|
||||||
const char **ss;
|
const char **ss;
|
||||||
const char **oss;
|
const char **oss;
|
||||||
const char **bootpl;
|
const char **plbootdir;
|
||||||
} config_t;
|
} config_t;
|
||||||
|
|
||||||
const char *gd_root[] = {"@RootDir", "[root]", "(execdir)/.."};
|
const char *gd_root[] = {"@RootDir", "[root]", "(execdir)/.."};
|
||||||
@ -250,7 +249,8 @@ const char *gd_pl[] = {"@PlDir", "(share)/Yap"};
|
|||||||
const char *gd_commons[] = {"@CommonsDir", "(share)/PrologCommons"};
|
const char *gd_commons[] = {"@CommonsDir", "(share)/PrologCommons"};
|
||||||
const char *gd_ss[] = {"(dll)"};
|
const char *gd_ss[] = {"(dll)"};
|
||||||
const char *gd_oss[] = {"."};
|
const char *gd_oss[] = {"."};
|
||||||
const char *gd_bootpl[] = {"(pl)/pl"};
|
const char *gd_plbootdir[] = {"@BootPlDi",
|
||||||
|
"(pl)/pl"};
|
||||||
|
|
||||||
static config_t *gnu(config_t *i) {
|
static config_t *gnu(config_t *i) {
|
||||||
i->root = gd_root;
|
i->root = gd_root;
|
||||||
@ -262,34 +262,11 @@ static config_t *gnu(config_t *i) {
|
|||||||
i->commons = gd_commons;
|
i->commons = gd_commons;
|
||||||
i->ss = gd_ss;
|
i->ss = gd_ss;
|
||||||
i->oss = gd_oss;
|
i->oss = gd_oss;
|
||||||
i->bootpl = gd_bootpl;
|
i->plbootdir = gd_plbootdir;
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *build_root[] = {"."};
|
|
||||||
const char *build_lib[] = {"."};
|
|
||||||
const char *build_share[] = {"(src)"};
|
|
||||||
const char *build_include[] = {"(src/include]"};
|
|
||||||
const char *build_dll[] = {"."};
|
|
||||||
const char *build_pl[] = {"pl"};
|
|
||||||
const char *build_commons[] = {"PrologCommons"};
|
|
||||||
const char *build_ss[] = {NULL};
|
|
||||||
const char *build_bootpl[] = {"(pl)boot.yap"};
|
|
||||||
|
|
||||||
static config_t *build(config_t *i) {
|
|
||||||
i->root = build_root;
|
|
||||||
i->lib = build_lib;
|
|
||||||
i->share = build_share;
|
|
||||||
i->include = build_include;
|
|
||||||
i->dll = build_dll;
|
|
||||||
i->pl = build_pl;
|
|
||||||
i->commons = build_commons;
|
|
||||||
i->ss = build_ss;
|
|
||||||
i->bootpl = build_bootpl;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search
|
* Search
|
||||||
*/
|
*/
|
||||||
@ -355,7 +332,11 @@ char *location(YAP_init_args *iap, const char *inp, char *out) {
|
|||||||
if (tmp && tmp[0])
|
if (tmp && tmp[0])
|
||||||
strcpy(out, tmp);
|
strcpy(out, tmp);
|
||||||
} else if (strstr(inp + 1, "PlDir") == inp + 1) {
|
} else if (strstr(inp + 1, "PlDir") == inp + 1) {
|
||||||
const char *tmp = iap->SavedState;
|
const char *tmp = iap->PlDir;
|
||||||
|
if (tmp && tmp[0])
|
||||||
|
strcpy(out, tmp);
|
||||||
|
} else if (strstr(inp + 1, "PlBootDir") == inp + 1) {
|
||||||
|
const char *tmp = iap->PlBootDir;
|
||||||
if (tmp && tmp[0])
|
if (tmp && tmp[0])
|
||||||
strcpy(out, tmp);
|
strcpy(out, tmp);
|
||||||
} else if (strstr(inp + 1, "PrologBootFile") == inp + 1) {
|
} else if (strstr(inp + 1, "PrologBootFile") == inp + 1) {
|
||||||
@ -485,6 +466,7 @@ static void Yap_set_locations(YAP_init_args *iap) {
|
|||||||
Yap_SHAREDIR = find_directory(iap, template->share, NULL);
|
Yap_SHAREDIR = find_directory(iap, template->share, NULL);
|
||||||
Yap_DLLDIR = find_directory(iap, template->dll, NULL);
|
Yap_DLLDIR = find_directory(iap, template->dll, NULL);
|
||||||
Yap_PLDIR = find_directory(iap, template->pl, NULL);
|
Yap_PLDIR = find_directory(iap, template->pl, NULL);
|
||||||
|
Yap_BOOTPLDIR = find_directory(iap, template->plbootdir, NULL);
|
||||||
Yap_COMMONSDIR = find_directory(iap, template->commons, NULL);
|
Yap_COMMONSDIR = find_directory(iap, template->commons, NULL);
|
||||||
if (iap->SavedState == NULL)
|
if (iap->SavedState == NULL)
|
||||||
iap->SavedState = "startup.yss";
|
iap->SavedState = "startup.yss";
|
||||||
@ -494,7 +476,7 @@ static void Yap_set_locations(YAP_init_args *iap) {
|
|||||||
Yap_OUTPUT_STARTUP = find_directory(iap, template->ss, iap->OutputSavedState);
|
Yap_OUTPUT_STARTUP = find_directory(iap, template->ss, iap->OutputSavedState);
|
||||||
if (iap->PrologBootFile == NULL)
|
if (iap->PrologBootFile == NULL)
|
||||||
iap->PrologBootFile = "boot.yap";
|
iap->PrologBootFile = "boot.yap";
|
||||||
Yap_BOOTFILE = find_directory(iap, template->bootpl, iap->PrologBootFile);
|
Yap_BOOTFILE = find_directory(iap, template->plbootdir, iap->PrologBootFile);
|
||||||
if (Yap_ROOTDIR)
|
if (Yap_ROOTDIR)
|
||||||
setAtomicGlobalPrologFlag(HOME_FLAG,
|
setAtomicGlobalPrologFlag(HOME_FLAG,
|
||||||
MkAtomTerm(Yap_LookupAtom(Yap_ROOTDIR)));
|
MkAtomTerm(Yap_LookupAtom(Yap_ROOTDIR)));
|
||||||
@ -641,19 +623,15 @@ X_API YAP_file_type_t YAP_parse_yap_arguments(int argc, char *argv[],
|
|||||||
else if (argv[1] && *argv[1] != '-') {
|
else if (argv[1] && *argv[1] != '-') {
|
||||||
iap->PrologBootFile = *++argv;
|
iap->PrologBootFile = *++argv;
|
||||||
argc--;
|
argc--;
|
||||||
} else {
|
|
||||||
iap->PrologBootFile = "boot.yap";
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'B':
|
case 'B':
|
||||||
iap->boot_file_type = YAP_BOOT_PL;
|
iap->boot_file_type = YAP_BOOT_PL;
|
||||||
if (p[1])
|
if (p[1])
|
||||||
iap->PrologBootFile = p + 1;
|
iap->PlDir = p + 1;
|
||||||
else if (argv[1] && *argv[1] != '-') {
|
else if (argv[1] && *argv[1] != '-') {
|
||||||
iap->PrologBootFile = *++argv;
|
iap->PlDir = *++argv;
|
||||||
argc--;
|
argc--;
|
||||||
} else {
|
|
||||||
iap->PrologBootFile = "boot.yap";
|
|
||||||
}
|
}
|
||||||
iap->install = true;
|
iap->install = true;
|
||||||
break;
|
break;
|
||||||
|
@ -198,6 +198,8 @@ typedef struct yap_boot_params {
|
|||||||
const char *PlDir;
|
const char *PlDir;
|
||||||
//> if NON-NULL, name for a Prolog file to use when booting
|
//> if NON-NULL, name for a Prolog file to use when booting
|
||||||
const char *PrologBootFile;
|
const char *PrologBootFile;
|
||||||
|
//> if NON-NULL, directory for a Prolog file to be when booting
|
||||||
|
const char *PlBootDir;
|
||||||
//> if NON-NULL, path where we can find the saved state
|
//> if NON-NULL, path where we can find the saved state
|
||||||
const char *SavedState;
|
const char *SavedState;
|
||||||
//> bootstrapping mode: YAP is not properly installed
|
//> bootstrapping mode: YAP is not properly installed
|
||||||
|
@ -1399,7 +1399,7 @@ writable.
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static Int open3(USES_RfEGS1) {
|
static Int open3(USES_REGS1) {
|
||||||
/* '$open'(+File,+Mode,?Stream,-ReturnCode) */
|
/* '$open'(+File,+Mode,?Stream,-ReturnCode) */
|
||||||
return do_open(Deref(ARG1), Deref(ARG2), TermNil PASS_REGS);
|
return do_open(Deref(ARG1), Deref(ARG2), TermNil PASS_REGS);
|
||||||
}
|
}
|
||||||
|
@ -1130,7 +1130,6 @@ static Int p_expand_file_name(USES_REGS1) {
|
|||||||
|
|
||||||
static Int true_file_name3(USES_REGS1) {
|
static Int true_file_name3(USES_REGS1) {
|
||||||
Term t = Deref(ARG1), t2 = Deref(ARG2);
|
Term t = Deref(ARG1), t2 = Deref(ARG2);
|
||||||
char *root = NULL;
|
|
||||||
|
|
||||||
if (IsVarTerm(t)) {
|
if (IsVarTerm(t)) {
|
||||||
Yap_Error(INSTANTIATION_ERROR, t, "argument to true_file_name unbound");
|
Yap_Error(INSTANTIATION_ERROR, t, "argument to true_file_name unbound");
|
||||||
@ -1145,7 +1144,7 @@ static Int true_file_name3(USES_REGS1) {
|
|||||||
Yap_Error(TYPE_ERROR_ATOM, t2, "argument to true_file_name");
|
Yap_Error(TYPE_ERROR_ATOM, t2, "argument to true_file_name");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
root = RepAtom(AtomOfTerm(t2))->StrOfAE;
|
// root = RepAtom(AtomOfTerm(t2))->StrOfAE;
|
||||||
}
|
}
|
||||||
char tmp[YAP_FILENAME_MAX + 1];
|
char tmp[YAP_FILENAME_MAX + 1];
|
||||||
if (!Yap_AbsoluteFile(RepAtom(AtomOfTerm(t))->StrOfAE, tmp, true))
|
if (!Yap_AbsoluteFile(RepAtom(AtomOfTerm(t))->StrOfAE, tmp, true))
|
||||||
|
@ -9,71 +9,71 @@
|
|||||||
% http://dtai.cs.kuleuven.be/problog
|
% http://dtai.cs.kuleuven.be/problog
|
||||||
%
|
%
|
||||||
% ProbLog was developed at Katholieke Universiteit Leuven
|
% ProbLog was developed at Katholieke Universiteit Leuven
|
||||||
%
|
%
|
||||||
% Copyright 2008, 2009, 2010
|
% Copyright 2008, 2009, 2010
|
||||||
% Katholieke Universiteit Leuven
|
% Katholieke Universiteit Leuven
|
||||||
%
|
%
|
||||||
% Main authors of this file:
|
% Main authors of this file:
|
||||||
% Bernd Gutmann
|
% Bernd Gutmann
|
||||||
%
|
%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
%
|
||||||
% Artistic License 2.0
|
% Artistic License 2.0
|
||||||
%
|
%
|
||||||
% Copyright (c) 2000-2006, The Perl Foundation.
|
% Copyright (c) 2000-2006, The Perl Foundation.
|
||||||
%
|
%
|
||||||
% Everyone is permitted to copy and distribute verbatim copies of this
|
% Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
% license document, but changing it is not allowed. Preamble
|
% license document, but changing it is not allowed. Preamble
|
||||||
%
|
%
|
||||||
% This license establishes the terms under which a given free software
|
% This license establishes the terms under which a given free software
|
||||||
% Package may be copied, modified, distributed, and/or
|
% Package may be copied, modified, distributed, and/or
|
||||||
% redistributed. The intent is that the Copyright Holder maintains some
|
% redistributed. The intent is that the Copyright Holder maintains some
|
||||||
% artistic control over the development of that Package while still
|
% artistic control over the development of that Package while still
|
||||||
% keeping the Package available as open source and free software.
|
% keeping the Package available as open source and free software.
|
||||||
%
|
%
|
||||||
% You are always permitted to make arrangements wholly outside of this
|
% You are always permitted to make arrangements wholly outside of this
|
||||||
% license directly with the Copyright Holder of a given Package. If the
|
% license directly with the Copyright Holder of a given Package. If the
|
||||||
% terms of this license do not permit the full use that you propose to
|
% terms of this license do not permit the full use that you propose to
|
||||||
% make of the Package, you should contact the Copyright Holder and seek
|
% make of the Package, you should contact the Copyright Holder and seek
|
||||||
% a different licensing arrangement. Definitions
|
% a different licensing arrangement. Definitions
|
||||||
%
|
%
|
||||||
% "Copyright Holder" means the individual(s) or organization(s) named in
|
% "Copyright Holder" means the individual(s) or organization(s) named in
|
||||||
% the copyright notice for the entire Package.
|
% the copyright notice for the entire Package.
|
||||||
%
|
%
|
||||||
% "Contributor" means any party that has contributed code or other
|
% "Contributor" means any party that has contributed code or other
|
||||||
% material to the Package, in accordance with the Copyright Holder's
|
% material to the Package, in accordance with the Copyright Holder's
|
||||||
% procedures.
|
% procedures.
|
||||||
%
|
%
|
||||||
% "You" and "your" means any person who would like to copy, distribute,
|
% "You" and "your" means any person who would like to copy, distribute,
|
||||||
% or modify the Package.
|
% or modify the Package.
|
||||||
%
|
%
|
||||||
% "Package" means the collection of files distributed by the Copyright
|
% "Package" means the collection of files distributed by the Copyright
|
||||||
% Holder, and derivatives of that collection and/or of those files. A
|
% Holder, and derivatives of that collection and/or of those files. A
|
||||||
% given Package may consist of either the Standard Version, or a
|
% given Package may consist of either the Standard Version, or a
|
||||||
% Modified Version.
|
% Modified Version.
|
||||||
%
|
%
|
||||||
% "Distribute" means providing a copy of the Package or making it
|
% "Distribute" means providing a copy of the Package or making it
|
||||||
% accessible to anyone else, or in the case of a company or
|
% accessible to anyone else, or in the case of a company or
|
||||||
% organization, to others outside of your company or organization.
|
% organization, to others outside of your company or organization.
|
||||||
%
|
%
|
||||||
% "Distributor Fee" means any fee that you charge for Distributing this
|
% "Distributor Fee" means any fee that you charge for Distributing this
|
||||||
% Package or providing support for this Package to another party. It
|
% Package or providing support for this Package to another party. It
|
||||||
% does not mean licensing fees.
|
% does not mean licensing fees.
|
||||||
%
|
%
|
||||||
% "Standard Version" refers to the Package if it has not been modified,
|
% "Standard Version" refers to the Package if it has not been modified,
|
||||||
% or has been modified only in ways explicitly requested by the
|
% or has been modified only in ways explicitly requested by the
|
||||||
% Copyright Holder.
|
% Copyright Holder.
|
||||||
%
|
%
|
||||||
% "Modified Version" means the Package, if it has been changed, and such
|
% "Modified Version" means the Package, if it has been changed, and such
|
||||||
% changes were not explicitly requested by the Copyright Holder.
|
% changes were not explicitly requested by the Copyright Holder.
|
||||||
%
|
%
|
||||||
% "Original License" means this Artistic License as Distributed with the
|
% "Original License" means this Artistic License as Distributed with the
|
||||||
% Standard Version of the Package, in its current version or as it may
|
% Standard Version of the Package, in its current version or as it may
|
||||||
% be modified by The Perl Foundation in the future.
|
% be modified by The Perl Foundation in the future.
|
||||||
%
|
%
|
||||||
% "Source" form means the source code, documentation source, and
|
% "Source" form means the source code, documentation source, and
|
||||||
% configuration files for the Package.
|
% configuration files for the Package.
|
||||||
%
|
%
|
||||||
% "Compiled" form means the compiled bytecode, object code, binary, or
|
% "Compiled" form means the compiled bytecode, object code, binary, or
|
||||||
% any other form resulting from mechanical transformation or translation
|
% any other form resulting from mechanical transformation or translation
|
||||||
% of the Source form.
|
% of the Source form.
|
||||||
@ -81,34 +81,34 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
%
|
||||||
% Permission for Use and Modification Without Distribution
|
% Permission for Use and Modification Without Distribution
|
||||||
%
|
%
|
||||||
% (1) You are permitted to use the Standard Version and create and use
|
% (1) You are permitted to use the Standard Version and create and use
|
||||||
% Modified Versions for any purpose without restriction, provided that
|
% Modified Versions for any purpose without restriction, provided that
|
||||||
% you do not Distribute the Modified Version.
|
% you do not Distribute the Modified Version.
|
||||||
%
|
%
|
||||||
% Permissions for Redistribution of the Standard Version
|
% Permissions for Redistribution of the Standard Version
|
||||||
%
|
%
|
||||||
% (2) You may Distribute verbatim copies of the Source form of the
|
% (2) You may Distribute verbatim copies of the Source form of the
|
||||||
% Standard Version of this Package in any medium without restriction,
|
% Standard Version of this Package in any medium without restriction,
|
||||||
% either gratis or for a Distributor Fee, provided that you duplicate
|
% either gratis or for a Distributor Fee, provided that you duplicate
|
||||||
% all of the original copyright notices and associated disclaimers. At
|
% all of the original copyright notices and associated disclaimers. At
|
||||||
% your discretion, such verbatim copies may or may not include a
|
% your discretion, such verbatim copies may or may not include a
|
||||||
% Compiled form of the Package.
|
% Compiled form of the Package.
|
||||||
%
|
%
|
||||||
% (3) You may apply any bug fixes, portability changes, and other
|
% (3) You may apply any bug fixes, portability changes, and other
|
||||||
% modifications made available from the Copyright Holder. The resulting
|
% modifications made available from the Copyright Holder. The resulting
|
||||||
% Package will still be considered the Standard Version, and as such
|
% Package will still be considered the Standard Version, and as such
|
||||||
% will be subject to the Original License.
|
% will be subject to the Original License.
|
||||||
%
|
%
|
||||||
% Distribution of Modified Versions of the Package as Source
|
% Distribution of Modified Versions of the Package as Source
|
||||||
%
|
%
|
||||||
% (4) You may Distribute your Modified Version as Source (either gratis
|
% (4) You may Distribute your Modified Version as Source (either gratis
|
||||||
% or for a Distributor Fee, and with or without a Compiled form of the
|
% or for a Distributor Fee, and with or without a Compiled form of the
|
||||||
% Modified Version) provided that you clearly document how it differs
|
% Modified Version) provided that you clearly document how it differs
|
||||||
% from the Standard Version, including, but not limited to, documenting
|
% from the Standard Version, including, but not limited to, documenting
|
||||||
% any non-standard features, executables, or modules, and provided that
|
% any non-standard features, executables, or modules, and provided that
|
||||||
% you do at least ONE of the following:
|
% you do at least ONE of the following:
|
||||||
%
|
%
|
||||||
% (a) make the Modified Version available to the Copyright Holder of the
|
% (a) make the Modified Version available to the Copyright Holder of the
|
||||||
% Standard Version, under the Original License, so that the Copyright
|
% Standard Version, under the Original License, so that the Copyright
|
||||||
% Holder may include your modifications in the Standard Version. (b)
|
% Holder may include your modifications in the Standard Version. (b)
|
||||||
@ -127,7 +127,7 @@
|
|||||||
%
|
%
|
||||||
% Distribution of Compiled Forms of the Standard Version or
|
% Distribution of Compiled Forms of the Standard Version or
|
||||||
% Modified Versions without the Source
|
% Modified Versions without the Source
|
||||||
%
|
%
|
||||||
% (5) You may Distribute Compiled forms of the Standard Version without
|
% (5) You may Distribute Compiled forms of the Standard Version without
|
||||||
% the Source, provided that you include complete instructions on how to
|
% the Source, provided that you include complete instructions on how to
|
||||||
% get the Source of the Standard Version. Such instructions must be
|
% get the Source of the Standard Version. Such instructions must be
|
||||||
@ -138,13 +138,13 @@
|
|||||||
% within thirty days after you become aware that the instructions are
|
% within thirty days after you become aware that the instructions are
|
||||||
% invalid, then you do not forfeit any of your rights under this
|
% invalid, then you do not forfeit any of your rights under this
|
||||||
% license.
|
% license.
|
||||||
%
|
%
|
||||||
% (6) You may Distribute a Modified Version in Compiled form without the
|
% (6) You may Distribute a Modified Version in Compiled form without the
|
||||||
% Source, provided that you comply with Section 4 with respect to the
|
% Source, provided that you comply with Section 4 with respect to the
|
||||||
% Source of the Modified Version.
|
% Source of the Modified Version.
|
||||||
%
|
%
|
||||||
% Aggregating or Linking the Package
|
% Aggregating or Linking the Package
|
||||||
%
|
%
|
||||||
% (7) You may aggregate the Package (either the Standard Version or
|
% (7) You may aggregate the Package (either the Standard Version or
|
||||||
% Modified Version) with other packages and Distribute the resulting
|
% Modified Version) with other packages and Distribute the resulting
|
||||||
% aggregation provided that you do not charge a licensing fee for the
|
% aggregation provided that you do not charge a licensing fee for the
|
||||||
@ -152,7 +152,7 @@
|
|||||||
% components in the aggregation are permitted. The terms of this license
|
% components in the aggregation are permitted. The terms of this license
|
||||||
% apply to the use and Distribution of the Standard or Modified Versions
|
% apply to the use and Distribution of the Standard or Modified Versions
|
||||||
% as included in the aggregation.
|
% as included in the aggregation.
|
||||||
%
|
%
|
||||||
% (8) You are permitted to link Modified and Standard Versions with
|
% (8) You are permitted to link Modified and Standard Versions with
|
||||||
% other works, to embed the Package in a larger work of your own, or to
|
% other works, to embed the Package in a larger work of your own, or to
|
||||||
% build stand-alone binary or bytecode versions of applications that
|
% build stand-alone binary or bytecode versions of applications that
|
||||||
@ -160,7 +160,7 @@
|
|||||||
% provided the result does not expose a direct interface to the Package.
|
% provided the result does not expose a direct interface to the Package.
|
||||||
%
|
%
|
||||||
% Items That are Not Considered Part of a Modified Version
|
% Items That are Not Considered Part of a Modified Version
|
||||||
%
|
%
|
||||||
% (9) Works (including, but not limited to, modules and scripts) that
|
% (9) Works (including, but not limited to, modules and scripts) that
|
||||||
% merely extend or make use of the Package, do not, by themselves, cause
|
% merely extend or make use of the Package, do not, by themselves, cause
|
||||||
% the Package to be a Modified Version. In addition, such works are not
|
% the Package to be a Modified Version. In addition, such works are not
|
||||||
@ -168,21 +168,21 @@
|
|||||||
% terms of this license.
|
% terms of this license.
|
||||||
%
|
%
|
||||||
% General Provisions
|
% General Provisions
|
||||||
%
|
%
|
||||||
% (10) Any use, modification, and distribution of the Standard or
|
% (10) Any use, modification, and distribution of the Standard or
|
||||||
% Modified Versions is governed by this Artistic License. By using,
|
% Modified Versions is governed by this Artistic License. By using,
|
||||||
% modifying or distributing the Package, you accept this license. Do not
|
% modifying or distributing the Package, you accept this license. Do not
|
||||||
% use, modify, or distribute the Package, if you do not accept this
|
% use, modify, or distribute the Package, if you do not accept this
|
||||||
% license.
|
% license.
|
||||||
%
|
%
|
||||||
% (11) If your Modified Version has been derived from a Modified Version
|
% (11) If your Modified Version has been derived from a Modified Version
|
||||||
% made by someone other than you, you are nevertheless required to
|
% made by someone other than you, you are nevertheless required to
|
||||||
% ensure that your Modified Version complies with the requirements of
|
% ensure that your Modified Version complies with the requirements of
|
||||||
% this license.
|
% this license.
|
||||||
%
|
%
|
||||||
% (12) This license does not grant you the right to use any trademark,
|
% (12) This license does not grant you the right to use any trademark,
|
||||||
% service mark, tradename, or logo of the Copyright Holder.
|
% service mark, tradename, or logo of the Copyright Holder.
|
||||||
%
|
%
|
||||||
% (13) This license includes the non-exclusive, worldwide,
|
% (13) This license includes the non-exclusive, worldwide,
|
||||||
% free-of-charge patent license to make, have made, use, offer to sell,
|
% free-of-charge patent license to make, have made, use, offer to sell,
|
||||||
% sell, import and otherwise transfer the Package with respect to any
|
% sell, import and otherwise transfer the Package with respect to any
|
||||||
@ -192,7 +192,7 @@
|
|||||||
% that the Package constitutes direct or contributory patent
|
% that the Package constitutes direct or contributory patent
|
||||||
% infringement, then this Artistic License to you shall terminate on the
|
% infringement, then this Artistic License to you shall terminate on the
|
||||||
% date that such litigation is filed.
|
% date that such litigation is filed.
|
||||||
%
|
%
|
||||||
% (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT
|
% (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT
|
||||||
% HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED
|
% HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED
|
||||||
% WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
% WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
@ -224,13 +224,13 @@
|
|||||||
|
|
||||||
:- yap_flag(unknown,error).
|
:- yap_flag(unknown,error).
|
||||||
:- style_check(single_var).
|
:- style_check(single_var).
|
||||||
|
:- start_low_level_trace.
|
||||||
:- initialization((
|
:- initialization((
|
||||||
bb_put(logger_filename,'out.dat'),
|
bb_put(logger_filename,'out.dat'),
|
||||||
bb_put(logger_delimiter,';'),
|
bb_put(logger_delimiter,';'),
|
||||||
bb_put(logger_variables,[])
|
bb_put(logger_variables,[])
|
||||||
)).
|
)).
|
||||||
|
:- stopS_low_level_trace.
|
||||||
|
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%= Defines a new variable, possible types are: int, float and time
|
%= Defines a new variable, possible types are: int, float and time
|
||||||
@ -289,7 +289,7 @@ logger_set_filename(Name) :-
|
|||||||
|
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%= Set the delimiter for the fields
|
%= Set the delimiter for the fields
|
||||||
%=
|
%=
|
||||||
%= +Delimiter
|
%= +Delimiter
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ logger_set_delimiter(Delimiter) :-
|
|||||||
%========================================================================
|
%========================================================================
|
||||||
%= Set the value of the variable name. If the value is already set or
|
%= Set the value of the variable name. If the value is already set or
|
||||||
%= if the variable does not exists, an error will be displayed and the
|
%= if the variable does not exists, an error will be displayed and the
|
||||||
%= Prolog will be halted.
|
%= Prolog will be halted.
|
||||||
%=
|
%=
|
||||||
%= +Name, +Value
|
%= +Name, +Value
|
||||||
%========================================================================
|
%========================================================================
|
||||||
@ -325,13 +325,13 @@ logger_set_variable(Name,Value) :-
|
|||||||
nl,
|
nl,
|
||||||
fail
|
fail
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),!.
|
),!.
|
||||||
|
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%= Set the value of the variable name. If the value is already set or
|
%= Set the value of the variable name. If the value is already set or
|
||||||
%= the old value is overwritten. If the variable does not exists, an
|
%= the old value is overwritten. If the variable does not exists, an
|
||||||
%= error will be displayed and the Prolog will be halted.
|
%= error will be displayed and the Prolog will be halted.
|
||||||
%=
|
%=
|
||||||
%= +Name, +Value
|
%= +Name, +Value
|
||||||
%========================================================================
|
%========================================================================
|
||||||
@ -372,7 +372,7 @@ logger_add_to_variable(Name,Value) :-
|
|||||||
%========================================================================
|
%========================================================================
|
||||||
%= Get the value of the variable name. If the value is not yet set or
|
%= Get the value of the variable name. If the value is not yet set or
|
||||||
%= if the variable does not exists, an error will be displayed and the
|
%= if the variable does not exists, an error will be displayed and the
|
||||||
%= Prolog will be halted.
|
%= Prolog will be halted.
|
||||||
%=
|
%=
|
||||||
%= +Name, +Value
|
%= +Name, +Value
|
||||||
%========================================================================
|
%========================================================================
|
||||||
@ -390,18 +390,18 @@ logger_get_variable(Name,Value) :-
|
|||||||
fail
|
fail
|
||||||
);(
|
);(
|
||||||
bb_get(Key,Value)
|
bb_get(Key,Value)
|
||||||
;
|
;
|
||||||
(
|
(
|
||||||
write('logger_set_variable, unknown variable '),
|
write('logger_set_variable, unknown variable '),
|
||||||
write(Name),
|
write(Name),
|
||||||
nl,
|
nl,
|
||||||
fail
|
fail
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),!.
|
),!.
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%=
|
%=
|
||||||
%=
|
%=
|
||||||
%= +Name
|
%= +Name
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
@ -424,7 +424,7 @@ logger_start_timer(Name) :-
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
!.
|
!.
|
||||||
|
|
||||||
|
|
||||||
logger_stop_timer(Name) :-
|
logger_stop_timer(Name) :-
|
||||||
atom_concat(logger_start_time_,Name,Key),
|
atom_concat(logger_start_time_,Name,Key),
|
||||||
@ -449,7 +449,7 @@ logger_stop_timer(Name) :-
|
|||||||
%========================================================================
|
%========================================================================
|
||||||
%= write a new line to the log file, which contains all the
|
%= write a new line to the log file, which contains all the
|
||||||
%= values of the variables. afterwards, reset all variables to null.
|
%= values of the variables. afterwards, reset all variables to null.
|
||||||
%=
|
%=
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
logger_write_data :-
|
logger_write_data :-
|
||||||
@ -460,7 +460,7 @@ logger_write_data :-
|
|||||||
close(Handle),
|
close(Handle),
|
||||||
|
|
||||||
logger_reset_all_variables.
|
logger_reset_all_variables.
|
||||||
|
|
||||||
logger_write_data_intern([],_).
|
logger_write_data_intern([],_).
|
||||||
logger_write_data_intern([(Name,_Type)],Handle) :-
|
logger_write_data_intern([(Name,_Type)],Handle) :-
|
||||||
variablevalue_with_nullcheck(Name,Value),
|
variablevalue_with_nullcheck(Name,Value),
|
||||||
@ -478,14 +478,14 @@ variablevalue_with_nullcheck(Name,Result) :-
|
|||||||
bb_get(Key,Value),
|
bb_get(Key,Value),
|
||||||
(
|
(
|
||||||
Value=null
|
Value=null
|
||||||
->
|
->
|
||||||
Result = '' ;
|
Result = '' ;
|
||||||
Result=Value
|
Result=Value
|
||||||
).
|
).
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%=
|
%=
|
||||||
%=
|
%=
|
||||||
%=
|
%=
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
logger_reset_all_variables :-
|
logger_reset_all_variables :-
|
||||||
@ -497,9 +497,9 @@ logger_reset_all_variables :-
|
|||||||
|
|
||||||
|
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%=
|
%=
|
||||||
%=
|
%=
|
||||||
%=
|
%=
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
|
|
||||||
@ -513,7 +513,7 @@ logger_write_header :-
|
|||||||
logger_write_header_intern(Variables,1,Handle),
|
logger_write_header_intern(Variables,1,Handle),
|
||||||
format(Handle,'#####################################################################~n',[]),
|
format(Handle,'#####################################################################~n',[]),
|
||||||
close(Handle).
|
close(Handle).
|
||||||
|
|
||||||
logger_write_header_intern([],_,_).
|
logger_write_header_intern([],_,_).
|
||||||
logger_write_header_intern([(Name,Type)|T],Position,Handle) :-
|
logger_write_header_intern([(Name,Type)|T],Position,Handle) :-
|
||||||
format(Handle,'# ~q~6+~q~7+~q~n',[Position,Type,Name]),
|
format(Handle,'# ~q~6+~q~7+~q~n',[Position,Type,Name]),
|
||||||
|
@ -75,7 +75,7 @@ DESTINATION ${libpl}/library)
|
|||||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/startup.yss)
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/startup.yss)
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/startup.yss
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/startup.yss
|
||||||
COMMAND yap-bin -B${CMAKE_CURRENT_SOURCE_DIR}/boot.yap --output-saved-state=${CMAKE_CURRENT_BINARY_DIR}/startup.yss
|
COMMAND yap-bin -B${CMAKE_CURRENT_SOURCE_DIR} --output-saved-state=${CMAKE_CURRENT_BINARY_DIR}/startup.yss
|
||||||
DEPENDS ${PL_BOOT_SOURCES} yap-bin
|
DEPENDS ${PL_BOOT_SOURCES} yap-bin
|
||||||
)
|
)
|
||||||
#else ()
|
#else ()
|
||||||
|
@ -205,7 +205,7 @@ print_message(L,E) :-
|
|||||||
( (Con = top ; var(C) ; C = [_|_]) ->
|
( (Con = top ; var(C) ; C = [_|_]) ->
|
||||||
'$execute_command'(C,VL,Pos,Con,C), ! ;
|
'$execute_command'(C,VL,Pos,Con,C), ! ;
|
||||||
% do term expansion
|
% do term expansion
|
||||||
expand_term(C, EC),
|
'$expand_term'(C, EC),
|
||||||
% execute a list of commands
|
% execute a list of commands
|
||||||
'$execute_commands'(EC,VL,Pos,Con,_Source),
|
'$execute_commands'(EC,VL,Pos,Con,_Source),
|
||||||
% succeed only if the *original* was at end of file.
|
% succeed only if the *original* was at end of file.
|
||||||
@ -453,3 +453,4 @@ If this hook predicate succeeds it must instantiate the _Action_ argument to th
|
|||||||
:- ensure_loaded('../pl/pathconf.yap').
|
:- ensure_loaded('../pl/pathconf.yap').
|
||||||
|
|
||||||
:- yap_flag(user:unknown,error).
|
:- yap_flag(user:unknown,error).
|
||||||
|
|
||||||
|
@ -1588,7 +1588,7 @@ End of conditional compilation.
|
|||||||
catch('$eval_if'(G), E, (print_message(error, E), fail)).
|
catch('$eval_if'(G), E, (print_message(error, E), fail)).
|
||||||
|
|
||||||
'$eval_if'(Goal) :-
|
'$eval_if'(Goal) :-
|
||||||
expand_term(Goal,TrueGoal),
|
'$expand_term'(Goal,TrueGoal),
|
||||||
once(TrueGoal).
|
once(TrueGoal).
|
||||||
|
|
||||||
'$if_directive'((:- if(_))).
|
'$if_directive'((:- if(_))).
|
||||||
|
@ -238,6 +238,7 @@ user_defined_directive(Dir,Action) :-
|
|||||||
|
|
||||||
'$thread_initialization'(M:D) :-
|
'$thread_initialization'(M:D) :-
|
||||||
eraseall('$thread_initialization'),
|
eraseall('$thread_initialization'),
|
||||||
|
writeln(M:D),
|
||||||
recorda('$thread_initialization',M:D,_),
|
recorda('$thread_initialization',M:D,_),
|
||||||
fail.
|
fail.
|
||||||
'$thread_initialization'(M:D) :-
|
'$thread_initialization'(M:D) :-
|
||||||
|
49
pl/top.yap
49
pl/top.yap
@ -176,16 +176,17 @@ current_prolog_flag(break_level, BreakLevel),
|
|||||||
%
|
%
|
||||||
% Hack in case expand_term has created a list of commands.
|
% Hack in case expand_term has created a list of commands.
|
||||||
%
|
%
|
||||||
'$execute_commands'(V,_,_,_,Source) :- var(V), !,
|
'$execute_commands'(V,_,_,_,Source) :- var(V), !,
|
||||||
'$do_error'(instantiation_error,meta_call(Source)).
|
'$do_error'(instantiation_error,meta_call(Source)).
|
||||||
'$execute_commands'([],_,_,_,_) :- !.
|
'$execute_commands'([],_,_,_,_) :- !.
|
||||||
'$execute_commands'([C|Cs],VL,Pos,Con,Source) :- !,
|
'$execute_commands'([C|Cs],VL,Pos,Con,Source) :-
|
||||||
(
|
!,
|
||||||
'$system_catch'('$execute_command'(C,VL,Pos,Con,Source),prolog,Error,'$LoopError'(Error, Con)),
|
(
|
||||||
fail
|
'$system_catch'('$execute_command'(C,VL,Pos,Con,Source),prolog,Error,'$LoopError'(Error, Con)),
|
||||||
;
|
fail
|
||||||
'$execute_commands'(Cs,VL,Pos,Con,Source)
|
;
|
||||||
).
|
'$execute_commands'(Cs,VL,Pos,Con,Source)
|
||||||
|
).
|
||||||
'$execute_commands'(C,VL,Pos,Con,Source) :-
|
'$execute_commands'(C,VL,Pos,Con,Source) :-
|
||||||
'$execute_command'(C,VL,Pos,Con,Source).
|
'$execute_command'(C,VL,Pos,Con,Source).
|
||||||
|
|
||||||
@ -211,15 +212,14 @@ current_prolog_flag(break_level, BreakLevel),
|
|||||||
\+ '$if_directive'(Command),
|
\+ '$if_directive'(Command),
|
||||||
!.
|
!.
|
||||||
'$execute_command'((:-G),VL,Pos,Option,_) :-
|
'$execute_command'((:-G),VL,Pos,Option,_) :-
|
||||||
% !,
|
Option \= top,
|
||||||
Option \= top,
|
!, % allow user expansion
|
||||||
!, % allow user expansion
|
'$expand_term'((:- G), O),
|
||||||
catch(expand_term((:- G), O),_O, fail),
|
(
|
||||||
(
|
|
||||||
O = (:- G1)
|
O = (:- G1)
|
||||||
->
|
->
|
||||||
'$yap_strip_module'(G1, M, G2),
|
'$yap_strip_module'(G1, M, NG),
|
||||||
'$process_directive'(G2, Option, M, VL, Pos)
|
'$process_directive'(NG, Option, M, VL, Pos)
|
||||||
;
|
;
|
||||||
'$execute_commands'(G1,VL,Pos,Option,O)
|
'$execute_commands'(G1,VL,Pos,Option,O)
|
||||||
).
|
).
|
||||||
@ -230,6 +230,23 @@ current_prolog_flag(break_level, BreakLevel),
|
|||||||
'$execute_command'(G, VL, Pos, Option, Source) :-
|
'$execute_command'(G, VL, Pos, Option, Source) :-
|
||||||
'$continue_with_command'(Option, VL, Pos, G, Source).
|
'$continue_with_command'(Option, VL, Pos, G, Source).
|
||||||
|
|
||||||
|
'$expand_term'(T,O) :-
|
||||||
|
catch( '$expand_term0'(T,O), _,( '$disable_debugging', fail) ),
|
||||||
|
!.
|
||||||
|
|
||||||
|
'$expand_term0'(T,O) :-
|
||||||
|
expand_term( T, T1),
|
||||||
|
!,
|
||||||
|
'$expand_term1'(T1,O).
|
||||||
|
'$expand_term0'(T,T).
|
||||||
|
|
||||||
|
'$expand_term1'(T,O) :-
|
||||||
|
'$yap_strip_module'(T1, M, G2),
|
||||||
|
'$is_metapredicate'(G2,M),
|
||||||
|
'$expand_meta_call'(M:G2, [], O),
|
||||||
|
!.
|
||||||
|
'$expand_term1'(O,O).
|
||||||
|
|
||||||
'$continue_with_command'(Where,V,'$stream_position'(C,_P,A1,A2,A3),'$source_location'(_F,L):G,Source) :-
|
'$continue_with_command'(Where,V,'$stream_position'(C,_P,A1,A2,A3),'$source_location'(_F,L):G,Source) :-
|
||||||
!,
|
!,
|
||||||
'$continue_with_command'(Where,V,'$stream_position'(C,L,A1,A2,A3),G,Source).
|
'$continue_with_command'(Where,V,'$stream_position'(C,L,A1,A2,A3),G,Source).
|
||||||
|
Reference in New Issue
Block a user