/************************************************************************* * * * YAP Prolog * * * * Yap Prolog was developed at NCCUP - Universidade do Porto * * * * Copyright L.Damas, V.S.Costa and Universidade do Porto 2015- * * * ************************************************************************** * * * File: YapGFlagInfo.h * Last rev: ** mods: * comments: global flag enumeration. * * * *************************************************************************/ /** @file YapGFlagInfo.h @addtogroup YAPFlags @{ @enum GLOBAL_FLAGS Global Flags supported by YAP @brief global flags and their values. */ #ifdef __ANDROID__ #define IN_ANDROID "true" #else #define IN_ANDROID "false" #endif START_GLOBAL_FLAGS /**< Number of address bits in the machine, either 64 or 32 bits. */ YAP_FLAG(ADDRESS_BITS_FLAG, "address_bits", false, nat, BITNESS, NULL), /**< An integer: if this amount of atoms has been created since the last atom-garbage collection, perform atom garbage collection at the first opportunity. Initial value is 10,000. May be changed. A value of 0 (zero) disables atom garbage collection. */ YAP_FLAG(AGC_MARGIN_FLAG, "agc_margin", true, nat, "10000", agc_threshold), /**< boolean: allow asserting and retracting clauses of static predicates. */ YAP_FLAG(ALLOW_ASSERT_FOR_STATIC_PREDICATES, "allow_assert_for_static_predicates", true, booleanFlag, "true", NULL), /**< how to present answers, default is `~p`. */ YAP_FLAG(ANSWER_FORMAT_FLAG, "answer_format", true, isatom, "~p", NULL), /**< read-only boolean, a machine running an Google's Android version of the Linux Operating System */ YAP_FLAG(ANDROID_FLAG, "android", false, ro, IN_ANDROID, NULL), #if __APPLE__ /**< read-only boolean, a machine running an Apple Operating System */ YAP_FLAG(APPLE_FLAG, "apple", false, ro, "true", NULL), #else YAP_FLAG(APPLE_FLAG, "apple", false, ro, "false", NULL), #endif /**< read-only atom, it describes the ISA used in this version of YAP. Available from YAP_ARCH. */ YAP_FLAG(ARCH_FLAG, "arch", false, ro, YAP_ARCH, NULL), YAP_FLAG(ARGV_FLAG, "argv", false, argv, "@boot", NULL), /**< Read-write flag telling whether arithmetic exceptions generate Prolog exceptions. If enabled: ~~~ ?- X is 2/0. ERROR!! ZERO DIVISOR ERROR- X is Exp ~~~ If disabled: ~~~ ?- X is 2/0. X = (+inf). ~~~ It is `true` by default, but it is disabled by packages like CLP(BN) and ProbLog. */ YAP_FLAG(ARITHMETIC_EXCEPTIONS_FLAG, "arithmetic_exceptions", true, booleanFlag, "true", NULL), /**< 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` */ YAP_FLAG(BACK_QUOTES_FLAG, "back_quotes", true, isatom, "true", bqs), /**< Read-only flag telling whether integers are bounded. The value depends on whether YAP uses the GMP library or not. */ YAP_FLAG(BOUNDED_FLAG, "bounded", false, booleanFlag, "false", NULL), YAP_FLAG(C_CC_FLAG, "c_cc", false, isatom, C_CC, NULL), YAP_FLAG(C_CFLAGS_FLAG, "c_cflags", false, isatom, C_CFLAGS, NULL), YAP_FLAG(C_LDFLAGS_FLAG, "c_ldflags", false, isatom, C_LDFLAGS, NULL), YAP_FLAG(C_LIBPLSO_FLAG, "c_libplso", false, isatom, C_LIBPLSO, NULL), YAP_FLAG(C_LIBS_FLAG, "c_libs", false, isatom, C_LIBS, NULL), /**< `char_conversion is iso` Writable flag telling whether a character conversion table is used when reading terms. The default value for this flag is `off` except in `sicstus` and `iso` language modes, where it is `on`. */ YAP_FLAG(CHAR_CONVERSION_FLAG, "char_conversion", true, booleanFlag, "false", NULL), /**< ` Writable flag telling whether a character escapes are enabled, `true`, or disabled, `false`. The default value for this flag is `true`. */ YAP_FLAG(CHARACTER_ESCAPES_FLAG, "character_escapes", true, booleanFlag, "true", NULL), YAP_FLAG(COLON_SETS_CALLING_CONTEXT_FLAG, "colon_sets_calling_context", true, booleanFlag, "true", NULL), /**< Read-only flag that gives the time when the main YAP binary was compiled. It is obtained staight from the __TIME__ macro, as defined in the C99. */ YAP_FLAG(COMPILED_AT_FLAG, "compiled_at", false, isatom, YAP_COMPILED_AT, NULL), /**< If _Value_ is unbound, tell whether debugging is `true` or `false`. If _Value_ is bound to `true` enable debugging, and if it is bound to `false` disable debugging. */ YAP_FLAG(DEBUG_FLAG, "debug", true, booleanFlag, "false", NULL), YAP_FLAG(DEBUG_INFO_FLAG, "debug_info", true, booleanFlag, "true", NULL), /**< Says whether to call the debUgger on an exception. False in YAP.. */ YAP_FLAG(DEBUG_ON_ERROR_FLAG, "debug_on_error", true, booleanFlag, "false", NULL), /**< If bound, set the argument to the `write_term/3` options the debugger uses to write terms. If unbound, show the current options. */ YAP_FLAG(DEBUGGER_PRINT_OPTIONS_FLAG, "debugger_print_options", true, list_option, "[quoted(true),numbervars(true),portrayed(true),max_depth(10)]", NULL), /**< Show their ancestors while debuggIng */ YAP_FLAG(DEBUGGER_SHOW_CONTEXT_FLAG, "debugger_show_context", true, booleanFlag, "false", NULL), /**< * A module to be inherited by all other modules. Default is user that * reexports prolog. * * Set it to `prolog` for SICStus Prolog like resolution, to `user` for * SWI-like. */ YAP_FLAG(DEFAULT_PARENT_MODULE_FLAG, "default_parent_module", true, isatom, "user", NULL), /**< Read-only flag that always returns `yap`. */ YAP_FLAG(DIALECT_FLAG, "dialect", false, ro, "yap", NULL), /**< If `true` (default `true`) YAP checks for definitions of the same predicate that are separated by clauses for other predicates. This may indicate that different procedures have the same name. The declaration discontiguous/1 disables this warning for user-specified predicates. */ YAP_FLAG(DISCONTIGUOUS_WARNINGS_FLAG, "discontiguous_warnings", true, booleanFlag, "true", NULL), /**< If `off` (default) consider the character `$` a control character, if vxu `on` consider `$` a lower case character. */ YAP_FLAG(DOLLAR_AS_LOWER_CASE_FLAG, "dollar_as_lower_case", true, booleanFlag, "false", dollar_to_lc), /**< 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, `codes`, or to a single atom, `atom`. If _Value_ is bound, set to the corresponding behavior. The default value is `codes`. */ YAP_FLAG(DOUBLE_QUOTES_FLAG, "double_quotes", true, isatom, "codes", dqs), YAP_FLAG(EDITOR_FLAG, "editor", true, isatom, "$EDITOR", NULL), /**< Read-only flag. It unifies with an atom that gives the original program path. */ YAP_FLAG(EXECUTABLE_FLAG, "executable", false, executable, "@boot", NULL), /**< If `on` allow fast machine code, if `off` (default) disable it. Only available in experimental implementations. */ YAP_FLAG(FAST_FLAG, "fast", true, booleanFlag, "false", NULL), YAP_FLAG(FILE_NAME_VARIABLES_FLAG, "file_name_variables", true, booleanFlag, "true", NULL), /**< C-library `printf()` format specification used by write/1 and friends to determine how floating point numbers are printed. The default is `%.15g`. The specified value is passed to `printf()` without further checking. For example, if you want less digits printed, `%g` will print all floats using 6 digits instead of the default 15. */ YAP_FLAG(FLOAT_FORMAT_FLAG, "float_format", true, isatom, "%.16f", NULL), /**< `gc` If `on` allow garbage collection (default), if `off` disable it. */ YAP_FLAG(GC_FLAG, "gc", true, booleanFlag, "on", NULL), /**< `gc_margin ` Set or show the minimum free stack before starting garbage collection. The default depends on total stack size. */ YAP_FLAG(GC_MARGIN_FLAG, "gc_margin", true, nat, "0", gc_margin), /**< * If `off` (default) do not show information on garbage collection and stack shifts, if `on` inform when a garbage collection or stack shift happened, if verbose give detailed information on garbage collection and stack shifts. Last, if `very_verbose` give detailed information on data-structures found during the garbage collection process, namely, on choice-points. */ YAP_FLAG(GC_TRACE_FLAG, "gc_trace", true, isatom, "off", NULL), /**< ` If `true` (default) generate debugging information for procedures, including source mode. If `false` predicates no information is generated, although debugging is still possible, and source mode is disabled. */ YAP_FLAG(GENERATE_DEBUGGING_INFO_FLAG, "generate_debug_info", true, booleanFlag, "true", NULL), YAP_FLAG(GMP_VERSION_FLAG, "gmp_version", false, isatom, "4.8.12", NULL), YAP_FLAG(HALT_AFTER_CONSULT_FLAG, "halt_after_consult", false, booleanFlag, "false", NULL), /**< home ` the root of the YAP installation, by default `/usr/local` in Unix or `c:\Yap` in Windows system. Can only be set at configure time */ YAP_FLAG(HOME_FLAG, "home", false, isatom, YAP_ROOTDIR, NULL), /**< host_type ` Return `configure` system information, including the machine-id for which YAP was compiled and Operating System information. */ YAP_FLAG(HOST_TYPE_FLAG, "host_type", false, isatom, HOST_ALIAS, NULL), /**< `index ` If `on` allow indexing (default), if `off` disable it, if `single` allow on first argument only. */ YAP_FLAG(INDEX_FLAG, "index", true, indexer, "multi", NULL), /**< `Index_sub_term_search_depth ` Maximum bound on searching sub-terms for indexing, if `0` (default) no bound. */ YAP_FLAG(INDEX_SUB_TERM_SEARCH_DEPTH_FLAG, "index_sub_term_search_depth", true, nat, "0", NULL), /**< `informational_messages ` If `on` allow printing of informational messages, such as the ones that are printed when consulting. If `off` disable printing these messages. It is `on` by default except if YAP is booted with the `-L` flag. */ YAP_FLAG(INFORMATIONAL_MESSAGES_FLAG, "informational_messages", true, isatom, "normal", NULL), /**< `integer_rounding_function is iso ` Read-only flag telling the rounding function used for integers. Takes the value `toward_zero` for the current version of YAP. */ YAP_FLAG(INTEGER_ROUNDING_FUNCTION_FLAG, "integer_rounding_function", true, isatom, "toward_zero", NULL), YAP_FLAG(ISO_FLAG, "iso", true, booleanFlag, "false", NULL), /**< read-only boolean, a machine running Jupyter */ YAP_FLAG(JUPYTER_FLAG, "jupyter", false, booleanFlag, "true", NULL), /**< `language ` Choose whether YAP follows native, closer to C-Prolog, `yap`, iso-prolog, `iso` or SICStus Prolog, `sicstus`. The current default is `cprolog`. This flag affects update semantics, leashing mode, style checking, handling calls to undefined procedures, how directives are interpreted, when to use dynamic, character escapes, and how files are consulted. Also check the `dialect` option. */ YAP_FLAG(LANGUAGE_FLAG, "language", true, isatom, "yap", NULL), /**< `max_arity is iso ` Read-only flag telling the maximum arity of a functor. Takes the value `unbounded` for the current version of YAP. */ YAP_FLAG(MAX_ARITY_FLAG, "max_arity", false, isatom, "unbounded", NULL), YAP_FLAG(MAX_TAGGED_INTEGER_FLAG, "max_tagged_integer", false, at2n, "INT_MAX", NULL), YAP_FLAG(MAX_THREADS_FLAG, "max_threads", false, at2n, "MAX_THREADS", NULL), YAP_FLAG(MAX_WORKERS_FLAG, "max_workers", false, at2n, "MAX_WORKERS", NULL), YAP_FLAG(MIN_TAGGED_INTEGER_FLAG, "min_tagged_integer", false, at2n, "INT_MIN", NULL), YAP_FLAG(MODULE_INDEPENDENT_OPERATORS_FLAG, "module_independent_operators", true, booleanFlag, "false", NULL), YAP_FLAG(N_OF_INTEGER_KEYS_IN_DB_FLAG, "n_of_integer_keys_in_db", false, ro, "256", NULL), YAP_FLAG(OCCURS_CHECK_FLAG, "occurs_check", true, booleanFlag, "false", NULL), /**< `open_expands_filename ` If `true` the open/3 builtin performs filename-expansion before opening a file (SICStus Prolog like). If `false` it does not (SWI-Prolog like). */ YAP_FLAG(OPEN_EXPANDS_FILENAME_FLAG, "open_expands_filename", true, booleanFlag, "false", NULL), /**< `open_shared_object ` If true, `open_shared_object/2` and friends are implemented, providing access to shared libraries (`.so` files) or to dynamic link libraries (`.DLL` files). */ /**< `module_independent_operators ` If `true` an operator declaration will be valid for every module in the program. This is for compatibility with old software that might expect module-independent operators. */ YAP_FLAG(OPEN_SHARED_OBJECT_FLAG, "open_shared_object", true, booleanFlag, "true", NULL), /**< if defined, first location where YAP expects to find the YAP Prolog library. Takes precedence over library_directory */ YAP_FLAG(PROLOG_LIBRARY_DIRECTORY_FLAG, "prolog_library_directory", true, isatom, "", NULL), /**< if defined, first location where YAP expects to find the YAP Prolog shared libraries (DLLS). Takes precedence over executable_directory/2. */ YAP_FLAG(PROLOG_FOREIGN_DIRECTORY_FLAG, "prolog_foreign_directory", true, isatom, "", NULL), YAP_FLAG(OPTIMISE_FLAG, "optimise", true, booleanFlag, "false", NULL), YAP_FLAG(OS_ARGV_FLAG, "os_argv", false, os_argv, "@boot", NULL), YAP_FLAG(PID_FLAG, "pid", false, sys_pid, "@boot", NULL), YAP_FLAG(PIPE_FLAG, "pipe", true, booleanFlag, "true", NULL), /**< `profiling ` If `off` (default) do not compile call counting information for procedures. If `on` compile predicates so that they calls and retries to the predicate may be counted. Profiling data can be read through the call_count_data/3 built-in. */ YAP_FLAG(PROFILING_FLAG, "profiling", true, booleanFlag, "false", NULL), /**< ` pt_alternatives_on(atom, changeable) ` SWI-Compatible option, determines prompting for alternatives in the Prolog toplevel. Default is groundness, YAP prompts for alternatives if and only if the query contains variables. The alternative, default in SWI-Prolog is determinism which implies the system prompts for alternatives if the goal succeeded while leaving choicepoints. */ YAP_FLAG(PROMPT_ALTERNATIVES_ON_FLAG, "prompt_alternatives_on", true, isatom, "determinism", NULL), YAP_FLAG(QUASI_QUOTATIONS_FLAG, "quasi_quotations", true, booleanFlag, "true", NULL), /**< `readline(boolean, changeable)` } enable the use of the readline library for console interactions, true by default if readline was found. */ YAP_FLAG(READLINE_FLAG, "readline", true, booleanFlag, "false", Yap_InitReadline), /**< If _Value_ is unbound, tell whether warnings for procedures defined in several different files are `on` or `off`. If _Value_ is bound to `on` enable these warnings, and if it is bound to `off` disable them. The default for YAP is `off`, unless we are in `sicstus` or `iso` mode. */ YAP_FLAG(REDEFINE_WARNINGS_FLAG, "redefine_warnings", true, booleanFlag, "true", NULL), YAP_FLAG(REPORT_ERROR_FLAG, "report_error", true, booleanFlag, "true", NULL), /**<`resource_database` Name of the resource file (saved-state or Prolog file) used to construct the YAP run-time environment. */ YAP_FLAG(RESOURCE_DATABASE_FLAG, "resource_database", false, isatom, YAP_BOOTSTRAP, NULL), /**<`saved_program` if `true` YAP booted from a `yss` file, usually `startup.yss'. If `false`, YAP booted from a Prolog file, by default `boot.yap`. */ YAP_FLAG(SAVED_PROGRAM_FLAG, "saved_program", false, booleanFlag, "false", NULL), /**< `shared_object_extension ` Suffix associated with loadable code. */ YAP_FLAG(SHARED_OBJECT_EXTENSION_FLAG, "shared_object_extension", false, isatom, SO_EXT, NULL), /**< Name of the environment variable used by the system to search for shared objects. */ YAP_FLAG(SHARED_OBJECT_SEARCH_PATH_FLAG, "shared_object_search_path", true, isatom, SO_PATH, NULL), /**< single_quoted text is usuallly interpreted as atoms. This flag allows other interpretations such as strings */ YAP_FLAG(SINGLE_QUOTES_FLAG, "single_quotes", true, isatom, "atom", sqf), /**< If `true` (default `true`) YAP checks for singleton variables when loading files. A singleton variable is a variable that appears ony once in a clause. The name must start with a capital letter, variables whose name starts with underscore are never considered singleton. */ YAP_FLAG(SINGLE_VAR_WARNINGS_FLAG, "single_var_warnings", true, booleanFlag, "true", NULL), /**< If `true` (default) YAP handles Signals such as `^C` (`SIGINT`). */ YAP_FLAG(SIGNALS_FLAG, "signals", true, booleanFlag, "true", NULL), /**< If `true` maintain the source for all clauses. Notice that this is trivially supported for facts, and always supported for dynamic code. */ YAP_FLAG(SOURCE_FLAG, "source", true, booleanFlag, "true", NULL), /**< `strict_iso ` If _Value_ is unbound, tell whether strict ISO compatibility mode is `on` or `off`. If _Value_ is bound to `on` set language mode to `iso` and enable strict mode. If _Value_ is bound to `off` disable strict mode, and keep the current language mode. The default for YAP is `off`. Under strict ISO Prolog mode all calls to non-ISO built-ins generate an error. Compilation of clauses that would call non-ISO built-ins will also generate errors. Pre-processing for grammar rules is also disabled. Module expansion is still performed. Arguably, ISO Prolog does not provide all the functionality required from a modern Prolog system. Moreover, because most Prolog implementations do not fully implement the standard and because the standard itself gives the implementor latitude in a few important questions, such as the unification algorithm and maximum size for numbers there is no guarantee that programs compliant with this mode will work the same way in every Prolog and in every platform. We thus believe this mode is mostly useful when investigating how a program depends on a Prolog's platform specific features. */ YAP_FLAG(STRICT_ISO_FLAG, "strict_iso", true, booleanFlag, "false", NULL), /**< `system_options ` This read only flag tells which options were used to compile YAP. Currently it informs whether the system supports `big_numbers`, `coroutining`, `depth_limit`, `low_level_tracer`, `or-parallelism`, `rational_trees`, `readline`, `tabling`, `threads`, or the `wam_profiler`. */ YAP_FLAG(SYSTEM_OPTIONS_FLAG, "system_options", false, options, SYSTEM_OPTIONS, NULL), YAP_FLAG(SYSTEM_THREAD_ID_FLAG, "system_thread_id", false, sys_thread_id, "@boot", NULL), /**< `tabling_mode` Sets or reads the tabling mode for all tabled predicates. Please (see Tabling) for the list of options. */ YAP_FLAG(TABLING_MODE_FLAG, "tabling_mode", true, isatom, "[]", NULL), YAP_FLAG(TIMEZONE_FLAG, "timezone", false, ro, "18000", NULL), /**< `toplevel_hook ` If bound, set the argument to a goal to be executed before entering the top-level. If unbound show the current goal or `true` if none is presented. Only the first solution is considered and the goal is not backtracked into. */ YAP_FLAG(TOPLEVEL_HOOK_FLAG, "toplevel_hook", true, booleanFlag, "true", NULL), YAP_FLAG(TOPLEVEL_PRINT_ANON_FLAG, "toplevel_print_anon", true, booleanFlag, "true", NULL), YAP_FLAG(TOPLEVEL_PRINT_OPTIONS_FLAG, "toplevel_print_options", true, list_option, "[quoted(true),numbervars(true),portrayed(true)]", NULL), YAP_FLAG(TOPLEVEL_PROMPT_FLAG, "toplevel_prompt", true, isatom, "?- ", mkprompt), YAP_FLAG(TTY_CONTROL_FLAG, "tty_control", true, booleanFlag, "true", NULL), /**< `unix` Read-only BooleanFlag flag that unifies with `true` if YAP is running on an Unix system. Defined if the C-compiler used to compile this version of YAP either defines `__unix__` or `unix`. */ /**< `update_semantics ` Define whether YAP should follow `immediate` update semantics, as in C-Prolog (default), `logical` update semantics, as in Quintus Prolog, SICStus Prolog, or in the ISO standard. There is also an intermediate mode, `logical_assert`, where dynamic procedures follow logical semantics but the internal data base still follows immediate semantics. */ YAP_FLAG(UNIX_FLAG, "unix", false, ro, "true", NULL), YAP_FLAG(UPDATE_SEMANTICS_FLAG, "update_semantics", true, isatom, "logical", NULL), /**< `user_flags ` Define the behaviour of set_prolog_flag/2 if the flag is not known. Values are `silent`, `warning` and `error`. The first two create the flag on-the-fly, with `warning` printing a message. The value `error` is consistent with ISO: it raises an existence error and does not create the flag. See also `create_prolog_flag/3`. The default is`error`, and developers are encouraged to use `create_prolog_flag/3` to create flags for their library. */ YAP_FLAG(USER_FLAGS_FLAG, "user_flags", true, isatom, "error", NULL), /**< `unknown is iso` Corresponds to calling the unknown/2 built-in. Possible ISO values are `error`, `fail`, and `warning`. Yap includes the following extensions: `fast_fail` does not invoke any handler. */ YAP_FLAG(UNKNOWN_FLAG, "unknown", true, isatom, "error", Yap_unknown), YAP_FLAG(VARIABLE_NAMES_MAY_END_WITH_QUOTES_FLAG, "variable_names_may_end_with_quotes", true, booleanFlag, "false", NULL), /**< Read-only flag that returns a compound term with the current version of YAP. The term will have the name `yap` and arity 4, the first argument will be the major version, the second the minor version, the third the patch number, and the last one is reserved. */ YAP_FLAG(VERSION_FLAG, "version", false, nat, YAP_NUMERIC_VERSION, NULL), /**< Read-only flag that unifies with a number of the form `_Major_ * 100000 + _Minor_ *100 + _Patch_`, where _Major_ is the major version, _Minor_ is the minor version, and _Patch_ is the patch number. */ YAP_FLAG(VERSION_DATA_FLAG, "version_data", false, ro, YAP_TVERSION, NULL), /**< ` this is the unique identifier for the last commit of the current GIT HEAD, it xan be used to identify versions that differ on small (or large) updates. */ YAP_FLAG(VERSION_GIT_FLAG, "version_git", false, isatom, YAP_GIT_HEAD, NULL), /**< Read-only booleanFlag flag that unifies with `true` if YAP is running on an Windows machine. */ YAP_FLAG(WRITE_ATTRIBUTES_FLAG, "write_attributes", true, isatom, "ignore", NULL), #if __WINDOWS__ YAP_FLAG(WINDOWS_FLAG, "windows", false, ro, "true", NULL), #endif /**< Writable flag telling whether the system should write lists of integers that are writable character codes using the list notation. It is `on` if enables or `off` if disabled. The default value for this flag is `off`. */ YAP_FLAG(WRITE_STRINGS_FLAG, "write_strings", true, booleanFlag, "false", NULL), END_GLOBAL_FLAGS //! @}