diff --git a/C/heapgc.c b/C/heapgc.c index 993051d13..027548e72 100644 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -4173,7 +4173,7 @@ call_gc(UInt gc_lim, Int predarity, CELL *current_env, yamop *nextop USES_REGS) } /* * debug for(save_total=1; save_total<=N; ++save_total) - * plwrite(XREGS[save_total],NULL,30,0,0); + * plwrite(XREGS[save_total],NULL,30,0,0,0); */ return TRUE; } diff --git a/C/init.c b/C/init.c index 9f650399b..681904ea5 100755 --- a/C/init.c +++ b/C/init.c @@ -1005,9 +1005,12 @@ InitLogDBErasedMarker(void) static void InitSWIAtoms(void) { + extern atom_t ATOM_; + int i=0, j=0; #include "iswiatoms.h" Yap_InitSWIHash(); + ATOM_ = PL_new_atom(""); } static void diff --git a/H/Yap.h b/H/Yap.h index a77e3d4c1..b16efe87e 100755 --- a/H/Yap.h +++ b/H/Yap.h @@ -121,6 +121,14 @@ #define DUMMY_FILLER_FOR_ABS_TYPE int dummy; #endif /* HAVE_GCC */ +#ifdef HAVE___BUILTIN_EXPECT +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) +#else +#define likely(x) (x) +#define unlikely(x) (x) +#endif + #ifdef THREADS #if USE_PTHREAD_LOCKING #ifndef _XOPEN_SOURCE diff --git a/H/iswiatoms.h b/H/iswiatoms.h index 297951f11..f17942031 100644 --- a/H/iswiatoms.h +++ b/H/iswiatoms.h @@ -8,7 +8,9 @@ SWI_Atoms[i++] = Yap_LookupAtom("$aborted"); SWI_Atoms[i++] = Yap_LookupAtom("abs"); SWI_Atoms[i++] = Yap_LookupAtom("access"); + SWI_Atoms[i++] = Yap_LookupAtom("access_level"); SWI_Atoms[i++] = Yap_LookupAtom("acos"); + SWI_Atoms[i++] = Yap_LookupAtom("acosh"); SWI_Atoms[i++] = Yap_LookupAtom("acyclic_term"); SWI_Atoms[i++] = Yap_LookupAtom("add_import"); SWI_Atoms[i++] = Yap_LookupAtom("address"); @@ -32,6 +34,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("as"); SWI_Atoms[i++] = Yap_LookupAtom("ascii"); SWI_Atoms[i++] = Yap_LookupAtom("asin"); + SWI_Atoms[i++] = Yap_LookupAtom("asinh"); SWI_Atoms[i++] = Yap_LookupAtom("assert"); SWI_Atoms[i++] = Yap_LookupAtom("asserta"); SWI_Atoms[i++] = Yap_LookupAtom("at"); @@ -43,6 +46,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("@<"); SWI_Atoms[i++] = Yap_LookupAtom("@=<"); SWI_Atoms[i++] = Yap_LookupAtom("atan"); + SWI_Atoms[i++] = Yap_LookupAtom("atanh"); SWI_Atoms[i++] = Yap_LookupAtom("atan2"); SWI_Atoms[i++] = Yap_LookupAtom("atom"); SWI_Atoms[i++] = Yap_LookupAtom("atom_garbage_collection"); @@ -56,8 +60,10 @@ SWI_Atoms[i++] = Yap_LookupAtom("\\"); SWI_Atoms[i++] = Yap_LookupAtom("backtrace"); SWI_Atoms[i++] = Yap_LookupAtom("|"); + SWI_Atoms[i++] = Yap_LookupAtom("base"); SWI_Atoms[i++] = Yap_LookupAtom("begin"); SWI_Atoms[i++] = Yap_LookupAtom("binary"); + SWI_Atoms[i++] = Yap_LookupAtom("binary_stream"); SWI_Atoms[i++] = Yap_LookupAtom("bind"); SWI_Atoms[i++] = Yap_LookupAtom("\\/"); SWI_Atoms[i++] = Yap_LookupAtom("blobs"); @@ -67,6 +73,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("boolean"); SWI_Atoms[i++] = Yap_LookupAtom("brace_term_position"); SWI_Atoms[i++] = Yap_LookupAtom("break"); + SWI_Atoms[i++] = Yap_LookupAtom("break_level"); SWI_Atoms[i++] = Yap_LookupAtom("btree"); SWI_Atoms[i++] = Yap_LookupAtom("buffer"); SWI_Atoms[i++] = Yap_LookupAtom("buffer_size"); @@ -80,6 +87,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("canceled"); SWI_Atoms[i++] = Yap_LookupAtom("case_sensitive_file_names"); SWI_Atoms[i++] = Yap_LookupAtom("catch"); + SWI_Atoms[i++] = Yap_LookupAtom("category"); SWI_Atoms[i++] = Yap_LookupAtom("ceil"); SWI_Atoms[i++] = Yap_LookupAtom("ceiling"); SWI_Atoms[i++] = Yap_LookupAtom("char_type"); @@ -90,7 +98,9 @@ SWI_Atoms[i++] = Yap_LookupAtom("chdir"); SWI_Atoms[i++] = Yap_LookupAtom("chmod"); SWI_Atoms[i++] = Yap_LookupAtom("choice"); + SWI_Atoms[i++] = Yap_LookupAtom("class"); SWI_Atoms[i++] = Yap_LookupAtom("clause"); + SWI_Atoms[i++] = Yap_LookupAtom("clauses"); SWI_Atoms[i++] = Yap_LookupAtom("clause_reference"); SWI_Atoms[i++] = Yap_LookupAtom("close"); SWI_Atoms[i++] = Yap_LookupAtom("close_on_abort"); @@ -109,9 +119,11 @@ SWI_Atoms[i++] = Yap_LookupAtom("context"); SWI_Atoms[i++] = Yap_LookupAtom("context_module"); SWI_Atoms[i++] = Yap_LookupAtom("continue"); + SWI_Atoms[i++] = Yap_LookupAtom("copysign"); SWI_Atoms[i++] = Yap_LookupAtom("core"); SWI_Atoms[i++] = Yap_LookupAtom("core_left"); SWI_Atoms[i++] = Yap_LookupAtom("cos"); + SWI_Atoms[i++] = Yap_LookupAtom("cosh"); SWI_Atoms[i++] = Yap_LookupAtom("cputime"); SWI_Atoms[i++] = Yap_LookupAtom("create"); SWI_Atoms[i++] = Yap_LookupAtom("csym"); @@ -127,6 +139,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("cut_parent"); SWI_Atoms[i++] = Yap_LookupAtom("cut"); SWI_Atoms[i++] = Yap_LookupAtom("cyclic_term"); + SWI_Atoms[i++] = Yap_LookupAtom("cycles"); SWI_Atoms[i++] = Yap_LookupAtom("$and"); SWI_Atoms[i++] = Yap_LookupAtom("date"); SWI_Atoms[i++] = Yap_LookupAtom("db_reference"); @@ -137,8 +150,10 @@ SWI_Atoms[i++] = Yap_LookupAtom("$cut"); SWI_Atoms[i++] = Yap_LookupAtom("dde_error"); SWI_Atoms[i++] = Yap_LookupAtom("dde_handle"); + SWI_Atoms[i++] = Yap_LookupAtom("deadline"); SWI_Atoms[i++] = Yap_LookupAtom("debug"); SWI_Atoms[i++] = Yap_LookupAtom("debug_on_error"); + SWI_Atoms[i++] = Yap_LookupAtom("debug_topic"); SWI_Atoms[i++] = Yap_LookupAtom("debugger_print_options"); SWI_Atoms[i++] = Yap_LookupAtom("debugger_show_context"); SWI_Atoms[i++] = Yap_LookupAtom("debugging"); @@ -170,11 +185,13 @@ SWI_Atoms[i++] = Yap_LookupAtom("double_quotes"); SWI_Atoms[i++] = Yap_LookupAtom("**"); SWI_Atoms[i++] = Yap_LookupAtom("$profile_node"); + SWI_Atoms[i++] = Yap_LookupAtom("$query_loop"); SWI_Atoms[i++] = Yap_LookupAtom("$recover_and_rethrow"); SWI_Atoms[i++] = Yap_LookupAtom("$stream"); SWI_Atoms[i++] = Yap_LookupAtom("$thread_init"); SWI_Atoms[i++] = Yap_LookupAtom("$throw"); SWI_Atoms[i++] = Yap_LookupAtom("$time"); + SWI_Atoms[i++] = Yap_LookupAtom("$toplevel"); SWI_Atoms[i++] = Yap_LookupAtom("$VAR$"); SWI_Atoms[i++] = Yap_LookupAtom("$wakeup"); SWI_Atoms[i++] = Yap_LookupAtom("dynamic"); @@ -268,9 +285,8 @@ SWI_Atoms[i++] = Yap_LookupAtom("hash"); SWI_Atoms[i++] = Yap_LookupAtom("hashed"); SWI_Atoms[i++] = Yap_LookupAtom("^"); - SWI_Atoms[i++] = Yap_LookupAtom("heap"); - SWI_Atoms[i++] = Yap_LookupAtom("heaplimit"); SWI_Atoms[i++] = Yap_LookupAtom("heapused"); + SWI_Atoms[i++] = Yap_LookupAtom("heap_gc"); SWI_Atoms[i++] = Yap_LookupAtom("help"); SWI_Atoms[i++] = Yap_LookupAtom("hidden"); SWI_Atoms[i++] = Yap_LookupAtom("hide_childs"); @@ -278,6 +294,8 @@ SWI_Atoms[i++] = Yap_LookupAtom("->"); SWI_Atoms[i++] = Yap_LookupAtom("ignore"); SWI_Atoms[i++] = Yap_LookupAtom("ignore_ops"); + SWI_Atoms[i++] = Yap_LookupAtom("import_into"); + SWI_Atoms[i++] = Yap_LookupAtom("import_type"); SWI_Atoms[i++] = Yap_LookupAtom("imported"); SWI_Atoms[i++] = Yap_LookupAtom("imported_procedure"); SWI_Atoms[i++] = Yap_LookupAtom("index"); @@ -312,9 +330,11 @@ SWI_Atoms[i++] = Yap_LookupAtom(">="); SWI_Atoms[i++] = Yap_LookupAtom("level"); SWI_Atoms[i++] = Yap_LookupAtom("li"); + SWI_Atoms[i++] = Yap_LookupAtom("library"); SWI_Atoms[i++] = Yap_LookupAtom("limit"); SWI_Atoms[i++] = Yap_LookupAtom("line"); SWI_Atoms[i++] = Yap_LookupAtom("line_count"); + SWI_Atoms[i++] = Yap_LookupAtom("line_position"); SWI_Atoms[i++] = Yap_LookupAtom("list"); SWI_Atoms[i++] = Yap_LookupAtom("list_position"); SWI_Atoms[i++] = Yap_LookupAtom("listing"); @@ -329,6 +349,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("log"); SWI_Atoms[i++] = Yap_LookupAtom("log10"); SWI_Atoms[i++] = Yap_LookupAtom("long"); + SWI_Atoms[i++] = Yap_LookupAtom("loose"); SWI_Atoms[i++] = Yap_LookupAtom("low"); SWI_Atoms[i++] = Yap_LookupAtom("lower"); SWI_Atoms[i++] = Yap_LookupAtom("lsb"); @@ -342,6 +363,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("max_depth"); SWI_Atoms[i++] = Yap_LookupAtom("max_files"); SWI_Atoms[i++] = Yap_LookupAtom("max_frame_size"); + SWI_Atoms[i++] = Yap_LookupAtom("max_length"); SWI_Atoms[i++] = Yap_LookupAtom("max_path_length"); SWI_Atoms[i++] = Yap_LookupAtom("max_size"); SWI_Atoms[i++] = Yap_LookupAtom("max_variable_length"); @@ -361,6 +383,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("mode"); SWI_Atoms[i++] = Yap_LookupAtom("modify"); SWI_Atoms[i++] = Yap_LookupAtom("module"); + SWI_Atoms[i++] = Yap_LookupAtom("module_class"); SWI_Atoms[i++] = Yap_LookupAtom("module_property"); SWI_Atoms[i++] = Yap_LookupAtom("module_transparent"); SWI_Atoms[i++] = Yap_LookupAtom("modules"); @@ -391,6 +414,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("not_unique"); SWI_Atoms[i++] = Yap_LookupAtom("number"); SWI_Atoms[i++] = Yap_LookupAtom("number_of_clauses"); + SWI_Atoms[i++] = Yap_LookupAtom("number_of_rules"); SWI_Atoms[i++] = Yap_LookupAtom("numbervar_option"); SWI_Atoms[i++] = Yap_LookupAtom("numbervars"); SWI_Atoms[i++] = Yap_LookupAtom("occurs_check"); @@ -405,6 +429,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("or"); SWI_Atoms[i++] = Yap_LookupAtom("order"); SWI_Atoms[i++] = Yap_LookupAtom("output"); + SWI_Atoms[i++] = Yap_LookupAtom("owner"); SWI_Atoms[i++] = Yap_LookupAtom("pair"); SWI_Atoms[i++] = Yap_LookupAtom("paren"); SWI_Atoms[i++] = Yap_LookupAtom("parent"); @@ -423,6 +448,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("+"); SWI_Atoms[i++] = Yap_LookupAtom("popcount"); SWI_Atoms[i++] = Yap_LookupAtom("portray"); + SWI_Atoms[i++] = Yap_LookupAtom("portray_goal"); SWI_Atoms[i++] = Yap_LookupAtom("position"); SWI_Atoms[i++] = Yap_LookupAtom("posix"); SWI_Atoms[i++] = Yap_LookupAtom("powm"); @@ -433,6 +459,8 @@ SWI_Atoms[i++] = Yap_LookupAtom("priority"); SWI_Atoms[i++] = Yap_LookupAtom("private_procedure"); SWI_Atoms[i++] = Yap_LookupAtom("procedure"); + SWI_Atoms[i++] = Yap_LookupAtom("process_comment"); + SWI_Atoms[i++] = Yap_LookupAtom("process_cputime"); SWI_Atoms[i++] = Yap_LookupAtom("profile_mode"); SWI_Atoms[i++] = Yap_LookupAtom("profile_no_cpu_time"); SWI_Atoms[i++] = Yap_LookupAtom("profile_node"); @@ -457,6 +485,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("quoted"); SWI_Atoms[i++] = Yap_LookupAtom("radix"); SWI_Atoms[i++] = Yap_LookupAtom("random"); + SWI_Atoms[i++] = Yap_LookupAtom("random_float"); SWI_Atoms[i++] = Yap_LookupAtom("random_option"); SWI_Atoms[i++] = Yap_LookupAtom("rational"); SWI_Atoms[i++] = Yap_LookupAtom("rationalize"); @@ -472,6 +501,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("record_position"); SWI_Atoms[i++] = Yap_LookupAtom("redefine"); SWI_Atoms[i++] = Yap_LookupAtom("redo"); + SWI_Atoms[i++] = Yap_LookupAtom("redo_in_skip"); SWI_Atoms[i++] = Yap_LookupAtom("references"); SWI_Atoms[i++] = Yap_LookupAtom("rem"); SWI_Atoms[i++] = Yap_LookupAtom("rename"); @@ -489,6 +519,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("runtime"); SWI_Atoms[i++] = Yap_LookupAtom("save_class"); SWI_Atoms[i++] = Yap_LookupAtom("save_option"); + SWI_Atoms[i++] = Yap_LookupAtom("see"); SWI_Atoms[i++] = Yap_LookupAtom("seed"); SWI_Atoms[i++] = Yap_LookupAtom("seek_method"); SWI_Atoms[i++] = Yap_LookupAtom("select"); @@ -501,15 +532,18 @@ SWI_Atoms[i++] = Yap_LookupAtom("shared_object"); SWI_Atoms[i++] = Yap_LookupAtom("shared_object_handle"); SWI_Atoms[i++] = Yap_LookupAtom("shell"); + SWI_Atoms[i++] = Yap_LookupAtom("shift_time"); SWI_Atoms[i++] = Yap_LookupAtom("sign"); SWI_Atoms[i++] = Yap_LookupAtom("signal"); SWI_Atoms[i++] = Yap_LookupAtom("signal_handler"); SWI_Atoms[i++] = Yap_LookupAtom("silent"); SWI_Atoms[i++] = Yap_LookupAtom("sin"); SWI_Atoms[i++] = Yap_LookupAtom("singletons"); + SWI_Atoms[i++] = Yap_LookupAtom("sinh"); SWI_Atoms[i++] = Yap_LookupAtom("size"); SWI_Atoms[i++] = Yap_LookupAtom("size_t"); SWI_Atoms[i++] = Yap_LookupAtom("skip"); + SWI_Atoms[i++] = Yap_LookupAtom("skipped"); SWI_Atoms[i++] = Yap_LookupAtom("<"); SWI_Atoms[i++] = Yap_LookupAtom("=<"); SWI_Atoms[i++] = Yap_LookupAtom("*->"); @@ -528,6 +562,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("*"); SWI_Atoms[i++] = Yap_LookupAtom("start"); SWI_Atoms[i++] = Yap_LookupAtom("stat"); + SWI_Atoms[i++] = Yap_LookupAtom("state"); SWI_Atoms[i++] = Yap_LookupAtom("static_procedure"); SWI_Atoms[i++] = Yap_LookupAtom("statistics"); SWI_Atoms[i++] = Yap_LookupAtom("status"); @@ -538,9 +573,11 @@ SWI_Atoms[i++] = Yap_LookupAtom("stream_pair"); SWI_Atoms[i++] = Yap_LookupAtom("$stream_position"); SWI_Atoms[i++] = Yap_LookupAtom("stream_property"); + SWI_Atoms[i++] = Yap_LookupAtom("stream_type_check"); SWI_Atoms[i++] = Yap_LookupAtom("=="); SWI_Atoms[i++] = Yap_LookupAtom("string"); SWI_Atoms[i++] = Yap_LookupAtom("string_position"); + SWI_Atoms[i++] = Yap_LookupAtom("strong"); SWI_Atoms[i++] = Yap_LookupAtom("subterm_positions"); SWI_Atoms[i++] = Yap_LookupAtom("suffix"); SWI_Atoms[i++] = Yap_LookupAtom("syntax_error"); @@ -551,15 +588,19 @@ SWI_Atoms[i++] = Yap_LookupAtom("system_thread_id"); SWI_Atoms[i++] = Yap_LookupAtom("system_time"); SWI_Atoms[i++] = Yap_LookupAtom("tan"); + SWI_Atoms[i++] = Yap_LookupAtom("tanh"); SWI_Atoms[i++] = Yap_LookupAtom("temporary_files"); SWI_Atoms[i++] = Yap_LookupAtom("term"); SWI_Atoms[i++] = Yap_LookupAtom("term_expansion"); SWI_Atoms[i++] = Yap_LookupAtom("term_position"); SWI_Atoms[i++] = Yap_LookupAtom("terminal"); SWI_Atoms[i++] = Yap_LookupAtom("terminal_capability"); + SWI_Atoms[i++] = Yap_LookupAtom("test"); SWI_Atoms[i++] = Yap_LookupAtom("text"); + SWI_Atoms[i++] = Yap_LookupAtom("text_stream"); SWI_Atoms[i++] = Yap_LookupAtom("thread"); SWI_Atoms[i++] = Yap_LookupAtom("thread_cputime"); + SWI_Atoms[i++] = Yap_LookupAtom("thread_get_message_option"); SWI_Atoms[i++] = Yap_LookupAtom("thread_initialization"); SWI_Atoms[i++] = Yap_LookupAtom("thread_local"); SWI_Atoms[i++] = Yap_LookupAtom("thread_local_procedure"); @@ -637,6 +678,7 @@ SWI_Atoms[i++] = Yap_LookupAtom("wakeup"); SWI_Atoms[i++] = Yap_LookupAtom("walltime"); SWI_Atoms[i++] = Yap_LookupAtom("warning"); + SWI_Atoms[i++] = Yap_LookupAtom("weak"); SWI_Atoms[i++] = Yap_LookupAtom("wchar_t"); SWI_Atoms[i++] = Yap_LookupAtom("when_condition"); SWI_Atoms[i++] = Yap_LookupAtom("white"); @@ -656,15 +698,18 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_abs),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_access),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_acos),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_acosh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_alias),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_and),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_ar_equals),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_ar_not_equal),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_asin),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_asinh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_assert),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_asserta),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_atan),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_atan),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_atanh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_atan2),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_atom),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_att),3); @@ -686,6 +731,7 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_ceiling),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_chars),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_chars),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_class),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_clause),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_close_on_abort),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_close_on_exec),1); @@ -694,7 +740,9 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_colon),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_comma),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_context),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_copysign),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_cos),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_cosh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_cputime),0); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_curl),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_cut_call),1); @@ -762,7 +810,9 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_ground),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_hat),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_ifthen),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_import_into),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_input),0); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_input),3); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_integer),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_interrupt),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_io_error),2); @@ -792,6 +842,7 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_nonvar),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_not_implemented),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_not_provable),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_not_strict_equal),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_occurs_check),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_or),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_output),0); @@ -806,14 +857,17 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_powm),3); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_print),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_print_message),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_priority),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_procedure),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_prove),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_prove),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_punct),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_random),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_random_float),0); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_rational),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_rationalize),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_rdiv),2); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_redo),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_rem),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_reposition),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_representation_error),1); @@ -831,6 +885,7 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_signal),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_sin),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_singletons),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_sinh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_size),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_smaller),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_smaller_equal),2); @@ -848,6 +903,7 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_syntax_error),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_syntax_error),3); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_tan),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_tanh),1); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_term_expansion),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_term_position),5); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_timeout),1); @@ -868,3 +924,4 @@ SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_warning),3); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_xor),2); SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_xpceref),1); + SWI_Functors[j++] = Yap_MkFunctor(SWIAtomToAtom(ATOM_xpceref),2); diff --git a/H/pl-global.h b/H/pl-global.h index 6338c68dc..a6860b105 100644 --- a/H/pl-global.h +++ b/H/pl-global.h @@ -163,6 +163,7 @@ typedef struct PL_local_data { { IOSTREAM *streams[6]; /* handles for standard streams */ struct input_context *input_stack; /* maintain input stream info */ struct output_context *output_stack; /* maintain output stream info */ + st_check stream_type_check; /* Check bin/text streams? */ } IO; struct @@ -253,35 +254,6 @@ extern PL_local_data_t lds; #define exception_term (LD->exception.term) -// THIS HAS TO BE ABSTRACTED - -#define GLOBAL_LD (LOCAL_PL_local_data_p) - -#if !defined(O_PLMT) && !defined(YAPOR) -#define LOCAL_LD (GLOBAL_LD) -#define LD (GLOBAL_LD) -#define ARG1_LD void -#define ARG_LD -#define GET_LD -#define PRED_LD -#define PASS_LD -#define PASS_LD1 - -#else - -#define LOCAL_LD (__PL_ld) -#define LD LOCAL_LD - -#define GET_LD CACHE_REGS PL_local_data_t *__PL_ld = GLOBAL_LD; -#define ARG1_LD PL_local_data_t *__PL_ld - -#define ARG_LD , ARG1_LD -#define PASS_LD1 LD -#define PASS_LD , LD -#define PRED_LD GET_LD - -#endif - #define Suser_input (LD->IO.streams[0]) #define Suser_output (LD->IO.streams[1]) #define Suser_error (LD->IO.streams[2]) diff --git a/H/pl-incl.h b/H/pl-incl.h index d948ceb1a..4d2a7e225 100755 --- a/H/pl-incl.h +++ b/H/pl-incl.h @@ -225,6 +225,35 @@ users foreign language code. *******************************/ #define WM_SIGNALLED (WM_USER+4201) /* how to select a good number!? */ +#endif + +// THIS HAS TO BE ABSTRACTED + +#define GLOBAL_LD (LOCAL_PL_local_data_p) + +#if !defined(O_PLMT) && !defined(YAPOR) +#define LOCAL_LD (GLOBAL_LD) +#define LD (GLOBAL_LD) +#define ARG1_LD void +#define ARG_LD +#define GET_LD +#define PRED_LD +#define PASS_LD +#define PASS_LD1 + +#else + +#define LOCAL_LD (__PL_ld) +#define LD LOCAL_LD + +#define GET_LD CACHE_REGS struct PL_local_data *__PL_ld = GLOBAL_LD; +#define ARG1_LD struct PL_local_data *__PL_ld + +#define ARG_LD , ARG1_LD +#define PASS_LD1 LD +#define PASS_LD , LD +#define PRED_LD GET_LD + #endif /******************************** @@ -481,6 +510,27 @@ typedef struct exception_frame /* PL_throw exception environments */ jmp_buf exception_jmp_env; /* longjmp environment */ } exception_frame; + /******************************* + * STREAM I/O * + *******************************/ + +#define REDIR_MAGIC 0x23a9bef3 + +typedef struct redir_context +{ int magic; /* REDIR_MAGIC */ + IOSTREAM *stream; /* temporary output */ + int is_stream; /* redirect to stream */ + int redirected; /* output is redirected */ + term_t term; /* redirect target */ + int out_format; /* output type */ + int out_arity; /* 2 for difference-list versions */ + size_t size; /* size of I/O buffer */ + char *data; /* data written */ + char buffer[1024]; /* fast temporary buffer */ +} redir_context; + +#include "pl-file.h" + /* vsc: global variables */ #include "pl-global.h" @@ -558,25 +608,6 @@ typedef struct wakeup_state } wakeup_state; - /******************************* - * STREAM I/O * - *******************************/ - -#define REDIR_MAGIC 0x23a9bef3 - -typedef struct redir_context -{ int magic; /* REDIR_MAGIC */ - IOSTREAM *stream; /* temporary output */ - int is_stream; /* redirect to stream */ - int redirected; /* output is redirected */ - term_t term; /* redirect target */ - int out_format; /* output type */ - int out_arity; /* 2 for difference-list versions */ - size_t size; /* size of I/O buffer */ - char *data; /* data written */ - char buffer[1024]; /* fast temporary buffer */ -} redir_context; - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Defining built-in predicates using the new interface @@ -740,7 +771,19 @@ PL_EXPORT(int) PL_release_stream(IOSTREAM *s); COMMON(atom_t) fileNameStream(IOSTREAM *s); COMMON(int) streamStatus(IOSTREAM *s); -COMMON(int) getOutputStream(term_t t, IOSTREAM **s); +#define getOutputStream(t, k, s) getOutputStream__LD(t, k, s PASS_LD) +#define getTextOutputStream(t, s) getTextOutputStream__LD(t, s PASS_LD) +#define getBinaryOutputStream(t, s) getBinaryOutputStream__LD(t, s PASS_LD) + +#define getInputStream(t, k, s) getInputStream__LD(t, k, s PASS_LD) +#define getTextInputStream(t, s) getTextInputStream__LD(t, s PASS_LD) +#define getBinaryInputStream(t, s) getBinaryInputStream__LD(t, s PASS_LD) + +COMMON(int) getTextOutputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getBinaryOutputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getTextInputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getBinaryInputStream__LD(term_t t, IOSTREAM **s ARG_LD); + COMMON(void) pushOutputContext(void); COMMON(void) popOutputContext(void); COMMON(int) getSingleChar(IOSTREAM *s, int signals); @@ -869,7 +912,6 @@ setBoolean(int *flag, term_t old, term_t new) succeed; } -COMMON(int) getInputStream__LD(term_t t, IOSTREAM **s ARG_LD); COMMON(int) PL_get_atom__LD(term_t t1, atom_t *a ARG_LD); COMMON(int) PL_get_atom_ex__LD(term_t t, atom_t *a ARG_LD); @@ -901,7 +943,14 @@ static inline void *allocHeap__LD(size_t n ARG_LD) return YAP_AllocSpaceFromYap(n); } -static inline void freeHeap__LD(void *mem, size_t n ARG_LD) +static inline void *allocHeapOrHalt(size_t n) +{ + void *ptr = YAP_AllocSpaceFromYap(n); + if (!ptr) Yap_exit(1); + return ptr; +} + +static inline void freeHeap(void *mem, size_t n) { YAP_FreeSpaceFromYap(mem); } diff --git a/H/pl-yap.h b/H/pl-yap.h index 2a7f89521..3c2ba8882 100644 --- a/H/pl-yap.h +++ b/H/pl-yap.h @@ -101,7 +101,6 @@ extern word globalString(size_t size, char *s); extern word globalWString(size_t size, wchar_t *s); #define allocHeap(n) allocHeap__LD(n PASS_LD) -#define freeHeap(p, n) freeHeap__LD(p, n PASS_LD) #define valHandle(r) valHandle__LD(r PASS_LD) @@ -150,6 +149,10 @@ atomLength(Atom atom) #define _PL_predicate(A,B,C,D) PL_predicate(A,B,C) #define predicateHasClauses(A) (YAP_NumberOfClausesForPredicate((YAP_PredEntryPtr)A) != 0) #define lookupModule(A) Yap_Module(MkAtomTerm(YAP_AtomFromSWIAtom(A))) + +#define BEGIN_NUMBERVARS(X) +#define END_NUMBERVARS(X) + #define charEscapeWriteOption(A) FALSE // VSC: to implement #define wordToTermRef(A) YAP_InitSlot(*(A)) #define isTaggedInt(A) IsIntegerTerm(A) @@ -179,8 +182,6 @@ charCode(Term w) return -1; } -#define getInputStream(t, s) getInputStream__LD(t, s PASS_LD) - #define PL_get_atom(t, a) PL_get_atom__LD(t, a PASS_LD) #define PL_get_atom_ex(t, a) PL_get_atom_ex__LD(t, a PASS_LD) #define PL_get_text(l, t, f) PL_get_text__LD(l, t, f PASS_LD) @@ -227,5 +228,8 @@ unblockSignal(int sig) } #endif +#define suspendTrace(x) + +atom_t ATOM_; #endif /* PL_YAP_H */ diff --git a/include/SWI-Prolog.h b/include/SWI-Prolog.h index 79a8ca0d9..aa3cdfe88 100755 --- a/include/SWI-Prolog.h +++ b/include/SWI-Prolog.h @@ -373,6 +373,10 @@ PL_EXPORT(IOSTREAM *)*_PL_streams(void); /* base of streams */ PL_WRT_ATTVAR_WRITE | \ PL_WRT_ATTVAR_PORTRAY) #define PL_WRT_BLOB_PORTRAY 0x400 /* Use portray to emit non-text blobs */ +#define PL_WRT_NO_CYCLES 0x800 /* Never emit @(Template,Subst) */ +#define PL_WRT_LIST 0x1000 /* Write [...], even with ignoreops */ +#define PL_WRT_NEWLINE 0x2000 /* Add a newline */ +#define PL_WRT_VARNAMES 0x4000 /* Internal: variable_names(List) */ PL_EXPORT(int) PL_write_term(IOSTREAM *s, term_t term, diff --git a/include/dswiatoms.h b/include/dswiatoms.h index 4941a157b..fac8f03ce 100644 --- a/include/dswiatoms.h +++ b/include/dswiatoms.h @@ -8,869 +8,926 @@ #define ATOM_aborted ((atom_t)(1*2+1)) #define ATOM_abs ((atom_t)(2*2+1)) #define ATOM_access ((atom_t)(3*2+1)) -#define ATOM_acos ((atom_t)(4*2+1)) -#define ATOM_acyclic_term ((atom_t)(5*2+1)) -#define ATOM_add_import ((atom_t)(6*2+1)) -#define ATOM_address ((atom_t)(7*2+1)) -#define ATOM_agc ((atom_t)(8*2+1)) -#define ATOM_agc_gained ((atom_t)(9*2+1)) -#define ATOM_agc_margin ((atom_t)(10*2+1)) -#define ATOM_agc_time ((atom_t)(11*2+1)) -#define ATOM_alias ((atom_t)(12*2+1)) -#define ATOM_allow_variable_name_as_functor ((atom_t)(13*2+1)) -#define ATOM_alnum ((atom_t)(14*2+1)) -#define ATOM_alpha ((atom_t)(15*2+1)) -#define ATOM_alternative ((atom_t)(16*2+1)) -#define ATOM_and ((atom_t)(17*2+1)) -#define ATOM_anonvar ((atom_t)(18*2+1)) -#define ATOM_append ((atom_t)(19*2+1)) -#define ATOM_ar_equals ((atom_t)(20*2+1)) -#define ATOM_ar_not_equal ((atom_t)(21*2+1)) -#define ATOM_arity ((atom_t)(22*2+1)) -#define ATOM_argument ((atom_t)(23*2+1)) -#define ATOM_argumentlimit ((atom_t)(24*2+1)) -#define ATOM_as ((atom_t)(25*2+1)) -#define ATOM_ascii ((atom_t)(26*2+1)) -#define ATOM_asin ((atom_t)(27*2+1)) -#define ATOM_assert ((atom_t)(28*2+1)) -#define ATOM_asserta ((atom_t)(29*2+1)) -#define ATOM_at ((atom_t)(30*2+1)) -#define ATOM_at_equals ((atom_t)(31*2+1)) -#define ATOM_at_exit ((atom_t)(32*2+1)) -#define ATOM_at_larger ((atom_t)(33*2+1)) -#define ATOM_at_larger_eq ((atom_t)(34*2+1)) -#define ATOM_at_not_equals ((atom_t)(35*2+1)) -#define ATOM_at_smaller ((atom_t)(36*2+1)) -#define ATOM_at_smaller_eq ((atom_t)(37*2+1)) -#define ATOM_atan ((atom_t)(38*2+1)) -#define ATOM_atan2 ((atom_t)(39*2+1)) -#define ATOM_atom ((atom_t)(40*2+1)) -#define ATOM_atom_garbage_collection ((atom_t)(41*2+1)) -#define ATOM_atomic ((atom_t)(42*2+1)) -#define ATOM_atoms ((atom_t)(43*2+1)) -#define ATOM_att ((atom_t)(44*2+1)) -#define ATOM_attributes ((atom_t)(45*2+1)) -#define ATOM_attvar ((atom_t)(46*2+1)) -#define ATOM_autoload ((atom_t)(47*2+1)) -#define ATOM_backquoted_string ((atom_t)(48*2+1)) -#define ATOM_backslash ((atom_t)(49*2+1)) -#define ATOM_backtrace ((atom_t)(50*2+1)) -#define ATOM_bar ((atom_t)(51*2+1)) -#define ATOM_begin ((atom_t)(52*2+1)) -#define ATOM_binary ((atom_t)(53*2+1)) -#define ATOM_bind ((atom_t)(54*2+1)) -#define ATOM_bitor ((atom_t)(55*2+1)) -#define ATOM_blobs ((atom_t)(56*2+1)) -#define ATOM_bof ((atom_t)(57*2+1)) -#define ATOM_bom ((atom_t)(58*2+1)) -#define ATOM_bool ((atom_t)(59*2+1)) -#define ATOM_boolean ((atom_t)(60*2+1)) -#define ATOM_brace_term_position ((atom_t)(61*2+1)) -#define ATOM_break ((atom_t)(62*2+1)) -#define ATOM_btree ((atom_t)(63*2+1)) -#define ATOM_buffer ((atom_t)(64*2+1)) -#define ATOM_buffer_size ((atom_t)(65*2+1)) -#define ATOM_built_in_procedure ((atom_t)(66*2+1)) -#define ATOM_busy ((atom_t)(67*2+1)) -#define ATOM_byte ((atom_t)(68*2+1)) -#define ATOM_c_stack ((atom_t)(69*2+1)) -#define ATOM_call ((atom_t)(70*2+1)) -#define ATOM_callable ((atom_t)(71*2+1)) -#define ATOM_callpred ((atom_t)(72*2+1)) -#define ATOM_canceled ((atom_t)(73*2+1)) -#define ATOM_case_sensitive_file_names ((atom_t)(74*2+1)) -#define ATOM_catch ((atom_t)(75*2+1)) -#define ATOM_ceil ((atom_t)(76*2+1)) -#define ATOM_ceiling ((atom_t)(77*2+1)) -#define ATOM_char_type ((atom_t)(78*2+1)) -#define ATOM_character ((atom_t)(79*2+1)) -#define ATOM_character_code ((atom_t)(80*2+1)) -#define ATOM_character_escapes ((atom_t)(81*2+1)) -#define ATOM_chars ((atom_t)(82*2+1)) -#define ATOM_chdir ((atom_t)(83*2+1)) -#define ATOM_chmod ((atom_t)(84*2+1)) -#define ATOM_choice ((atom_t)(85*2+1)) -#define ATOM_clause ((atom_t)(86*2+1)) -#define ATOM_clause_reference ((atom_t)(87*2+1)) -#define ATOM_close ((atom_t)(88*2+1)) -#define ATOM_close_on_abort ((atom_t)(89*2+1)) -#define ATOM_close_on_exec ((atom_t)(90*2+1)) -#define ATOM_close_option ((atom_t)(91*2+1)) -#define ATOM_cm ((atom_t)(92*2+1)) -#define ATOM_cntrl ((atom_t)(93*2+1)) -#define ATOM_co ((atom_t)(94*2+1)) -#define ATOM_codes ((atom_t)(95*2+1)) -#define ATOM_collected ((atom_t)(96*2+1)) -#define ATOM_collections ((atom_t)(97*2+1)) -#define ATOM_colon ((atom_t)(98*2+1)) -#define ATOM_comma ((atom_t)(99*2+1)) -#define ATOM_comments ((atom_t)(100*2+1)) -#define ATOM_compound ((atom_t)(101*2+1)) -#define ATOM_context ((atom_t)(102*2+1)) -#define ATOM_context_module ((atom_t)(103*2+1)) -#define ATOM_continue ((atom_t)(104*2+1)) -#define ATOM_core ((atom_t)(105*2+1)) -#define ATOM_core_left ((atom_t)(106*2+1)) -#define ATOM_cos ((atom_t)(107*2+1)) -#define ATOM_cputime ((atom_t)(108*2+1)) -#define ATOM_create ((atom_t)(109*2+1)) -#define ATOM_csym ((atom_t)(110*2+1)) -#define ATOM_csymf ((atom_t)(111*2+1)) -#define ATOM_cumulative ((atom_t)(112*2+1)) -#define ATOM_curl ((atom_t)(113*2+1)) -#define ATOM_current ((atom_t)(114*2+1)) -#define ATOM_current_input ((atom_t)(115*2+1)) -#define ATOM_current_output ((atom_t)(116*2+1)) -#define ATOM_cut ((atom_t)(117*2+1)) -#define ATOM_cut_call ((atom_t)(118*2+1)) -#define ATOM_cut_exit ((atom_t)(119*2+1)) -#define ATOM_cut_parent ((atom_t)(120*2+1)) -#define ATOM_cutted ((atom_t)(121*2+1)) -#define ATOM_cyclic_term ((atom_t)(122*2+1)) -#define ATOM_dand ((atom_t)(123*2+1)) -#define ATOM_date ((atom_t)(124*2+1)) -#define ATOM_db_reference ((atom_t)(125*2+1)) -#define ATOM_dc_call_prolog ((atom_t)(126*2+1)) -#define ATOM_dcall ((atom_t)(127*2+1)) -#define ATOM_dcall_cleanup ((atom_t)(128*2+1)) -#define ATOM_dcatch ((atom_t)(129*2+1)) -#define ATOM_dcut ((atom_t)(130*2+1)) -#define ATOM_dde_error ((atom_t)(131*2+1)) -#define ATOM_dde_handle ((atom_t)(132*2+1)) -#define ATOM_debug ((atom_t)(133*2+1)) -#define ATOM_debug_on_error ((atom_t)(134*2+1)) -#define ATOM_debugger_print_options ((atom_t)(135*2+1)) -#define ATOM_debugger_show_context ((atom_t)(136*2+1)) -#define ATOM_debugging ((atom_t)(137*2+1)) -#define ATOM_dec10 ((atom_t)(138*2+1)) -#define ATOM_default ((atom_t)(139*2+1)) -#define ATOM_defined ((atom_t)(140*2+1)) -#define ATOM_delete ((atom_t)(141*2+1)) -#define ATOM_depth_limit_exceeded ((atom_t)(142*2+1)) -#define ATOM_destroy ((atom_t)(143*2+1)) -#define ATOM_detached ((atom_t)(144*2+1)) -#define ATOM_detect ((atom_t)(145*2+1)) -#define ATOM_development ((atom_t)(146*2+1)) -#define ATOM_dexit ((atom_t)(147*2+1)) -#define ATOM_dforeign_registered ((atom_t)(148*2+1)) -#define ATOM_dgarbage_collect ((atom_t)(149*2+1)) -#define ATOM_digit ((atom_t)(150*2+1)) -#define ATOM_directory ((atom_t)(151*2+1)) -#define ATOM_discontiguous ((atom_t)(152*2+1)) -#define ATOM_div ((atom_t)(153*2+1)) -#define ATOM_gdiv ((atom_t)(154*2+1)) -#define ATOM_divide ((atom_t)(155*2+1)) -#define ATOM_dload ((atom_t)(156*2+1)) -#define ATOM_dmessage_queue ((atom_t)(157*2+1)) -#define ATOM_dmutex ((atom_t)(158*2+1)) -#define ATOM_domain_error ((atom_t)(159*2+1)) -#define ATOM_dos ((atom_t)(160*2+1)) -#define ATOM_dot ((atom_t)(161*2+1)) -#define ATOM_dots ((atom_t)(162*2+1)) -#define ATOM_double_quotes ((atom_t)(163*2+1)) -#define ATOM_doublestar ((atom_t)(164*2+1)) -#define ATOM_dprof_node ((atom_t)(165*2+1)) -#define ATOM_drecover_and_rethrow ((atom_t)(166*2+1)) -#define ATOM_dstream ((atom_t)(167*2+1)) -#define ATOM_dthread_init ((atom_t)(168*2+1)) -#define ATOM_dthrow ((atom_t)(169*2+1)) -#define ATOM_dtime ((atom_t)(170*2+1)) -#define ATOM_dvard ((atom_t)(171*2+1)) -#define ATOM_dwakeup ((atom_t)(172*2+1)) -#define ATOM_dynamic ((atom_t)(173*2+1)) -#define ATOM_e ((atom_t)(174*2+1)) -#define ATOM_encoding ((atom_t)(175*2+1)) -#define ATOM_end ((atom_t)(176*2+1)) -#define ATOM_end_of_file ((atom_t)(177*2+1)) -#define ATOM_end_of_line ((atom_t)(178*2+1)) -#define ATOM_end_of_stream ((atom_t)(179*2+1)) -#define ATOM_environment ((atom_t)(180*2+1)) -#define ATOM_eof ((atom_t)(181*2+1)) -#define ATOM_eof_action ((atom_t)(182*2+1)) -#define ATOM_eof_code ((atom_t)(183*2+1)) -#define ATOM_epsilon ((atom_t)(184*2+1)) -#define ATOM_equal ((atom_t)(185*2+1)) -#define ATOM_equals ((atom_t)(186*2+1)) -#define ATOM_erase ((atom_t)(187*2+1)) -#define ATOM_erased ((atom_t)(188*2+1)) -#define ATOM_error ((atom_t)(189*2+1)) -#define ATOM_eval ((atom_t)(190*2+1)) -#define ATOM_evaluable ((atom_t)(191*2+1)) -#define ATOM_evaluation_error ((atom_t)(192*2+1)) -#define ATOM_exception ((atom_t)(193*2+1)) -#define ATOM_exclusive ((atom_t)(194*2+1)) -#define ATOM_execute ((atom_t)(195*2+1)) -#define ATOM_exist ((atom_t)(196*2+1)) -#define ATOM_existence_error ((atom_t)(197*2+1)) -#define ATOM_exit ((atom_t)(198*2+1)) -#define ATOM_exited ((atom_t)(199*2+1)) -#define ATOM_exp ((atom_t)(200*2+1)) -#define ATOM_export ((atom_t)(201*2+1)) -#define ATOM_exported ((atom_t)(202*2+1)) -#define ATOM_exports ((atom_t)(203*2+1)) -#define ATOM_expression ((atom_t)(204*2+1)) -#define ATOM_external_exception ((atom_t)(205*2+1)) -#define ATOM_externals ((atom_t)(206*2+1)) -#define ATOM_fact ((atom_t)(207*2+1)) -#define ATOM_factor ((atom_t)(208*2+1)) -#define ATOM_fail ((atom_t)(209*2+1)) -#define ATOM_failure_error ((atom_t)(210*2+1)) -#define ATOM_false ((atom_t)(211*2+1)) -#define ATOM_feature ((atom_t)(212*2+1)) -#define ATOM_file ((atom_t)(213*2+1)) -#define ATOM_file_name ((atom_t)(214*2+1)) -#define ATOM_file_name_variables ((atom_t)(215*2+1)) -#define ATOM_file_no ((atom_t)(216*2+1)) -#define ATOM_flag ((atom_t)(217*2+1)) -#define ATOM_flag_value ((atom_t)(218*2+1)) -#define ATOM_float ((atom_t)(219*2+1)) -#define ATOM_float_format ((atom_t)(220*2+1)) -#define ATOM_float_fractional_part ((atom_t)(221*2+1)) -#define ATOM_float_integer_part ((atom_t)(222*2+1)) -#define ATOM_float_overflow ((atom_t)(223*2+1)) -#define ATOM_float_underflow ((atom_t)(224*2+1)) -#define ATOM_floor ((atom_t)(225*2+1)) -#define ATOM_force ((atom_t)(226*2+1)) -#define ATOM_foreign ((atom_t)(227*2+1)) -#define ATOM_foreign_function ((atom_t)(228*2+1)) -#define ATOM_foreign_return_value ((atom_t)(229*2+1)) -#define ATOM_fork ((atom_t)(230*2+1)) -#define ATOM_frame ((atom_t)(231*2+1)) -#define ATOM_frame_attribute ((atom_t)(232*2+1)) -#define ATOM_frame_finished ((atom_t)(233*2+1)) -#define ATOM_frame_reference ((atom_t)(234*2+1)) -#define ATOM_free_of_attvar ((atom_t)(235*2+1)) -#define ATOM_freeze ((atom_t)(236*2+1)) -#define ATOM_full ((atom_t)(237*2+1)) -#define ATOM_functor_name ((atom_t)(238*2+1)) -#define ATOM_functors ((atom_t)(239*2+1)) -#define ATOM_fx ((atom_t)(240*2+1)) -#define ATOM_fy ((atom_t)(241*2+1)) -#define ATOM_garbage_collected ((atom_t)(242*2+1)) -#define ATOM_garbage_collection ((atom_t)(243*2+1)) -#define ATOM_gc ((atom_t)(244*2+1)) -#define ATOM_gcd ((atom_t)(245*2+1)) -#define ATOM_gctime ((atom_t)(246*2+1)) -#define ATOM_getcwd ((atom_t)(247*2+1)) -#define ATOM_global ((atom_t)(248*2+1)) -#define ATOM_global_shifts ((atom_t)(249*2+1)) -#define ATOM_global_stack ((atom_t)(250*2+1)) -#define ATOM_globallimit ((atom_t)(251*2+1)) -#define ATOM_globalused ((atom_t)(252*2+1)) -#define ATOM_goal ((atom_t)(253*2+1)) -#define ATOM_goal_expansion ((atom_t)(254*2+1)) -#define ATOM_grammar ((atom_t)(255*2+1)) -#define ATOM_graph ((atom_t)(256*2+1)) -#define ATOM_ground ((atom_t)(257*2+1)) -#define ATOM_gvar ((atom_t)(258*2+1)) -#define ATOM_halt ((atom_t)(259*2+1)) -#define ATOM_has_alternatives ((atom_t)(260*2+1)) -#define ATOM_hash ((atom_t)(261*2+1)) -#define ATOM_hashed ((atom_t)(262*2+1)) -#define ATOM_hat ((atom_t)(263*2+1)) -#define ATOM_heap ((atom_t)(264*2+1)) -#define ATOM_heaplimit ((atom_t)(265*2+1)) -#define ATOM_heapused ((atom_t)(266*2+1)) -#define ATOM_help ((atom_t)(267*2+1)) -#define ATOM_hidden ((atom_t)(268*2+1)) -#define ATOM_hide_childs ((atom_t)(269*2+1)) -#define ATOM_history_depth ((atom_t)(270*2+1)) -#define ATOM_ifthen ((atom_t)(271*2+1)) -#define ATOM_ignore ((atom_t)(272*2+1)) -#define ATOM_ignore_ops ((atom_t)(273*2+1)) -#define ATOM_imported ((atom_t)(274*2+1)) -#define ATOM_imported_procedure ((atom_t)(275*2+1)) -#define ATOM_index ((atom_t)(276*2+1)) -#define ATOM_indexed ((atom_t)(277*2+1)) -#define ATOM_inf ((atom_t)(278*2+1)) -#define ATOM_inferences ((atom_t)(279*2+1)) -#define ATOM_infinite ((atom_t)(280*2+1)) -#define ATOM_informational ((atom_t)(281*2+1)) -#define ATOM_init_file ((atom_t)(282*2+1)) -#define ATOM_initialization ((atom_t)(283*2+1)) -#define ATOM_input ((atom_t)(284*2+1)) -#define ATOM_inserted_char ((atom_t)(285*2+1)) -#define ATOM_instantiation_error ((atom_t)(286*2+1)) -#define ATOM_int ((atom_t)(287*2+1)) -#define ATOM_int64_t ((atom_t)(288*2+1)) -#define ATOM_int_overflow ((atom_t)(289*2+1)) -#define ATOM_integer ((atom_t)(290*2+1)) -#define ATOM_integer_expression ((atom_t)(291*2+1)) -#define ATOM_interrupt ((atom_t)(292*2+1)) -#define ATOM_io_error ((atom_t)(293*2+1)) -#define ATOM_io_mode ((atom_t)(294*2+1)) -#define ATOM_ioctl ((atom_t)(295*2+1)) -#define ATOM_is ((atom_t)(296*2+1)) -#define ATOM_iso ((atom_t)(297*2+1)) -#define ATOM_iso_latin_1 ((atom_t)(298*2+1)) -#define ATOM_isovar ((atom_t)(299*2+1)) -#define ATOM_join ((atom_t)(300*2+1)) -#define ATOM_jump ((atom_t)(301*2+1)) -#define ATOM_kernel ((atom_t)(302*2+1)) -#define ATOM_key ((atom_t)(303*2+1)) -#define ATOM_larger ((atom_t)(304*2+1)) -#define ATOM_larger_equal ((atom_t)(305*2+1)) -#define ATOM_level ((atom_t)(306*2+1)) -#define ATOM_li ((atom_t)(307*2+1)) -#define ATOM_limit ((atom_t)(308*2+1)) -#define ATOM_line ((atom_t)(309*2+1)) -#define ATOM_line_count ((atom_t)(310*2+1)) -#define ATOM_list ((atom_t)(311*2+1)) -#define ATOM_list_position ((atom_t)(312*2+1)) -#define ATOM_listing ((atom_t)(313*2+1)) -#define ATOM_local ((atom_t)(314*2+1)) -#define ATOM_local_shifts ((atom_t)(315*2+1)) -#define ATOM_local_stack ((atom_t)(316*2+1)) -#define ATOM_locale ((atom_t)(317*2+1)) -#define ATOM_locallimit ((atom_t)(318*2+1)) -#define ATOM_localused ((atom_t)(319*2+1)) -#define ATOM_lock ((atom_t)(320*2+1)) -#define ATOM_locked ((atom_t)(321*2+1)) -#define ATOM_log ((atom_t)(322*2+1)) -#define ATOM_log10 ((atom_t)(323*2+1)) -#define ATOM_long ((atom_t)(324*2+1)) -#define ATOM_low ((atom_t)(325*2+1)) -#define ATOM_lower ((atom_t)(326*2+1)) -#define ATOM_lsb ((atom_t)(327*2+1)) -#define ATOM_lshift ((atom_t)(328*2+1)) -#define ATOM_main ((atom_t)(329*2+1)) -#define ATOM_mark ((atom_t)(330*2+1)) -#define ATOM_matches ((atom_t)(331*2+1)) -#define ATOM_max ((atom_t)(332*2+1)) -#define ATOM_max_arity ((atom_t)(333*2+1)) -#define ATOM_max_dde_handles ((atom_t)(334*2+1)) -#define ATOM_max_depth ((atom_t)(335*2+1)) -#define ATOM_max_files ((atom_t)(336*2+1)) -#define ATOM_max_frame_size ((atom_t)(337*2+1)) -#define ATOM_max_path_length ((atom_t)(338*2+1)) -#define ATOM_max_size ((atom_t)(339*2+1)) -#define ATOM_max_variable_length ((atom_t)(340*2+1)) -#define ATOM_memory ((atom_t)(341*2+1)) -#define ATOM_message ((atom_t)(342*2+1)) -#define ATOM_message_lines ((atom_t)(343*2+1)) -#define ATOM_message_queue ((atom_t)(344*2+1)) -#define ATOM_message_queue_property ((atom_t)(345*2+1)) -#define ATOM_meta_argument ((atom_t)(346*2+1)) -#define ATOM_meta_argument_specifier ((atom_t)(347*2+1)) -#define ATOM_meta_predicate ((atom_t)(348*2+1)) -#define ATOM_min ((atom_t)(349*2+1)) -#define ATOM_min_free ((atom_t)(350*2+1)) -#define ATOM_minus ((atom_t)(351*2+1)) -#define ATOM_mismatched_char ((atom_t)(352*2+1)) -#define ATOM_mod ((atom_t)(353*2+1)) -#define ATOM_mode ((atom_t)(354*2+1)) -#define ATOM_modify ((atom_t)(355*2+1)) -#define ATOM_module ((atom_t)(356*2+1)) -#define ATOM_module_property ((atom_t)(357*2+1)) -#define ATOM_module_transparent ((atom_t)(358*2+1)) -#define ATOM_modules ((atom_t)(359*2+1)) -#define ATOM_msb ((atom_t)(360*2+1)) -#define ATOM_multifile ((atom_t)(361*2+1)) -#define ATOM_mutex ((atom_t)(362*2+1)) -#define ATOM_mutex_option ((atom_t)(363*2+1)) -#define ATOM_mutex_property ((atom_t)(364*2+1)) -#define ATOM_natural ((atom_t)(365*2+1)) -#define ATOM_newline ((atom_t)(366*2+1)) -#define ATOM_next_argument ((atom_t)(367*2+1)) -#define ATOM_nil ((atom_t)(368*2+1)) -#define ATOM_nlink ((atom_t)(369*2+1)) -#define ATOM_no_memory ((atom_t)(370*2+1)) -#define ATOM_nodebug ((atom_t)(371*2+1)) -#define ATOM_non_empty_list ((atom_t)(372*2+1)) -#define ATOM_none ((atom_t)(373*2+1)) -#define ATOM_nonvar ((atom_t)(374*2+1)) -#define ATOM_noprofile ((atom_t)(375*2+1)) -#define ATOM_normal ((atom_t)(376*2+1)) -#define ATOM_not ((atom_t)(377*2+1)) -#define ATOM_not_equals ((atom_t)(378*2+1)) -#define ATOM_not_implemented ((atom_t)(379*2+1)) -#define ATOM_not_less_than_one ((atom_t)(380*2+1)) -#define ATOM_not_less_than_zero ((atom_t)(381*2+1)) -#define ATOM_not_provable ((atom_t)(382*2+1)) -#define ATOM_not_strickt_equals ((atom_t)(383*2+1)) -#define ATOM_not_unique ((atom_t)(384*2+1)) -#define ATOM_number ((atom_t)(385*2+1)) -#define ATOM_number_of_clauses ((atom_t)(386*2+1)) -#define ATOM_numbervar_option ((atom_t)(387*2+1)) -#define ATOM_numbervars ((atom_t)(388*2+1)) -#define ATOM_occurs_check ((atom_t)(389*2+1)) -#define ATOM_octet ((atom_t)(390*2+1)) -#define ATOM_off ((atom_t)(391*2+1)) -#define ATOM_on ((atom_t)(392*2+1)) -#define ATOM_open ((atom_t)(393*2+1)) -#define ATOM_operator ((atom_t)(394*2+1)) -#define ATOM_operator_priority ((atom_t)(395*2+1)) -#define ATOM_operator_specifier ((atom_t)(396*2+1)) -#define ATOM_optimise ((atom_t)(397*2+1)) -#define ATOM_or ((atom_t)(398*2+1)) -#define ATOM_order ((atom_t)(399*2+1)) -#define ATOM_output ((atom_t)(400*2+1)) -#define ATOM_pair ((atom_t)(401*2+1)) -#define ATOM_paren ((atom_t)(402*2+1)) -#define ATOM_parent ((atom_t)(403*2+1)) -#define ATOM_parent_goal ((atom_t)(404*2+1)) -#define ATOM_partial ((atom_t)(405*2+1)) -#define ATOM_past ((atom_t)(406*2+1)) -#define ATOM_past_end_of_stream ((atom_t)(407*2+1)) -#define ATOM_pattern ((atom_t)(408*2+1)) -#define ATOM_pc ((atom_t)(409*2+1)) -#define ATOM_peek ((atom_t)(410*2+1)) -#define ATOM_period ((atom_t)(411*2+1)) -#define ATOM_permission_error ((atom_t)(412*2+1)) -#define ATOM_pi ((atom_t)(413*2+1)) -#define ATOM_pipe ((atom_t)(414*2+1)) -#define ATOM_plain ((atom_t)(415*2+1)) -#define ATOM_plus ((atom_t)(416*2+1)) -#define ATOM_popcount ((atom_t)(417*2+1)) -#define ATOM_portray ((atom_t)(418*2+1)) -#define ATOM_position ((atom_t)(419*2+1)) -#define ATOM_posix ((atom_t)(420*2+1)) -#define ATOM_powm ((atom_t)(421*2+1)) -#define ATOM_predicate_indicator ((atom_t)(422*2+1)) -#define ATOM_predicates ((atom_t)(423*2+1)) -#define ATOM_print ((atom_t)(424*2+1)) -#define ATOM_print_message ((atom_t)(425*2+1)) -#define ATOM_priority ((atom_t)(426*2+1)) -#define ATOM_private_procedure ((atom_t)(427*2+1)) -#define ATOM_procedure ((atom_t)(428*2+1)) -#define ATOM_profile_mode ((atom_t)(429*2+1)) -#define ATOM_profile_no_cpu_time ((atom_t)(430*2+1)) -#define ATOM_profile_node ((atom_t)(431*2+1)) -#define ATOM_program ((atom_t)(432*2+1)) -#define ATOM_program_counter ((atom_t)(433*2+1)) -#define ATOM_prolog ((atom_t)(434*2+1)) -#define ATOM_prolog_flag ((atom_t)(435*2+1)) -#define ATOM_prolog_flag_access ((atom_t)(436*2+1)) -#define ATOM_prolog_flag_option ((atom_t)(437*2+1)) -#define ATOM_prolog_flag_type ((atom_t)(438*2+1)) -#define ATOM_prompt ((atom_t)(439*2+1)) -#define ATOM_property ((atom_t)(440*2+1)) -#define ATOM_protocol ((atom_t)(441*2+1)) -#define ATOM_prove ((atom_t)(442*2+1)) -#define ATOM_public ((atom_t)(443*2+1)) -#define ATOM_punct ((atom_t)(444*2+1)) -#define ATOM_query ((atom_t)(445*2+1)) -#define ATOM_question_mark ((atom_t)(446*2+1)) -#define ATOM_queue_option ((atom_t)(447*2+1)) -#define ATOM_quiet ((atom_t)(448*2+1)) -#define ATOM_quote ((atom_t)(449*2+1)) -#define ATOM_quoted ((atom_t)(450*2+1)) -#define ATOM_radix ((atom_t)(451*2+1)) -#define ATOM_random ((atom_t)(452*2+1)) -#define ATOM_random_option ((atom_t)(453*2+1)) -#define ATOM_rational ((atom_t)(454*2+1)) -#define ATOM_rationalize ((atom_t)(455*2+1)) -#define ATOM_rdiv ((atom_t)(456*2+1)) -#define ATOM_read ((atom_t)(457*2+1)) -#define ATOM_read_only ((atom_t)(458*2+1)) -#define ATOM_read_option ((atom_t)(459*2+1)) -#define ATOM_read_write ((atom_t)(460*2+1)) -#define ATOM_readline ((atom_t)(461*2+1)) -#define ATOM_real_time ((atom_t)(462*2+1)) -#define ATOM_receiver ((atom_t)(463*2+1)) -#define ATOM_record ((atom_t)(464*2+1)) -#define ATOM_record_position ((atom_t)(465*2+1)) -#define ATOM_redefine ((atom_t)(466*2+1)) -#define ATOM_redo ((atom_t)(467*2+1)) -#define ATOM_references ((atom_t)(468*2+1)) -#define ATOM_rem ((atom_t)(469*2+1)) -#define ATOM_rename ((atom_t)(470*2+1)) -#define ATOM_report_error ((atom_t)(471*2+1)) -#define ATOM_reposition ((atom_t)(472*2+1)) -#define ATOM_representation_error ((atom_t)(473*2+1)) -#define ATOM_representation_errors ((atom_t)(474*2+1)) -#define ATOM_reset ((atom_t)(475*2+1)) -#define ATOM_resource_error ((atom_t)(476*2+1)) -#define ATOM_resource_handle ((atom_t)(477*2+1)) -#define ATOM_retry ((atom_t)(478*2+1)) -#define ATOM_round ((atom_t)(479*2+1)) -#define ATOM_rshift ((atom_t)(480*2+1)) -#define ATOM_running ((atom_t)(481*2+1)) -#define ATOM_runtime ((atom_t)(482*2+1)) -#define ATOM_save_class ((atom_t)(483*2+1)) -#define ATOM_save_option ((atom_t)(484*2+1)) -#define ATOM_seed ((atom_t)(485*2+1)) -#define ATOM_seek_method ((atom_t)(486*2+1)) -#define ATOM_select ((atom_t)(487*2+1)) -#define ATOM_semicolon ((atom_t)(488*2+1)) -#define ATOM_separated ((atom_t)(489*2+1)) -#define ATOM_set ((atom_t)(490*2+1)) -#define ATOM_set_end_of_stream ((atom_t)(491*2+1)) -#define ATOM_setup_call_catcher_cleanup ((atom_t)(492*2+1)) -#define ATOM_shared ((atom_t)(493*2+1)) -#define ATOM_shared_object ((atom_t)(494*2+1)) -#define ATOM_shared_object_handle ((atom_t)(495*2+1)) -#define ATOM_shell ((atom_t)(496*2+1)) -#define ATOM_sign ((atom_t)(497*2+1)) -#define ATOM_signal ((atom_t)(498*2+1)) -#define ATOM_signal_handler ((atom_t)(499*2+1)) -#define ATOM_silent ((atom_t)(500*2+1)) -#define ATOM_sin ((atom_t)(501*2+1)) -#define ATOM_singletons ((atom_t)(502*2+1)) -#define ATOM_size ((atom_t)(503*2+1)) -#define ATOM_size_t ((atom_t)(504*2+1)) -#define ATOM_skip ((atom_t)(505*2+1)) -#define ATOM_smaller ((atom_t)(506*2+1)) -#define ATOM_smaller_equal ((atom_t)(507*2+1)) -#define ATOM_softcut ((atom_t)(508*2+1)) -#define ATOM_source_sink ((atom_t)(509*2+1)) -#define ATOM_space ((atom_t)(510*2+1)) -#define ATOM_spacing ((atom_t)(511*2+1)) -#define ATOM_spare ((atom_t)(512*2+1)) -#define ATOM_spy ((atom_t)(513*2+1)) -#define ATOM_sqrt ((atom_t)(514*2+1)) -#define ATOM_stack ((atom_t)(515*2+1)) -#define ATOM_stack_parameter ((atom_t)(516*2+1)) -#define ATOM_stack_shifts ((atom_t)(517*2+1)) -#define ATOM_stacks ((atom_t)(518*2+1)) -#define ATOM_stand_alone ((atom_t)(519*2+1)) -#define ATOM_standard ((atom_t)(520*2+1)) -#define ATOM_star ((atom_t)(521*2+1)) -#define ATOM_start ((atom_t)(522*2+1)) -#define ATOM_stat ((atom_t)(523*2+1)) -#define ATOM_static_procedure ((atom_t)(524*2+1)) -#define ATOM_statistics ((atom_t)(525*2+1)) -#define ATOM_status ((atom_t)(526*2+1)) -#define ATOM_stderr ((atom_t)(527*2+1)) -#define ATOM_stream ((atom_t)(528*2+1)) -#define ATOM_stream_option ((atom_t)(529*2+1)) -#define ATOM_stream_or_alias ((atom_t)(530*2+1)) -#define ATOM_stream_pair ((atom_t)(531*2+1)) -#define ATOM_stream_position ((atom_t)(532*2+1)) -#define ATOM_stream_property ((atom_t)(533*2+1)) -#define ATOM_strict_equal ((atom_t)(534*2+1)) -#define ATOM_string ((atom_t)(535*2+1)) -#define ATOM_string_position ((atom_t)(536*2+1)) -#define ATOM_subterm_positions ((atom_t)(537*2+1)) -#define ATOM_suffix ((atom_t)(538*2+1)) -#define ATOM_syntax_error ((atom_t)(539*2+1)) -#define ATOM_syntax_errors ((atom_t)(540*2+1)) -#define ATOM_system ((atom_t)(541*2+1)) -#define ATOM_system_error ((atom_t)(542*2+1)) -#define ATOM_system_init_file ((atom_t)(543*2+1)) -#define ATOM_system_thread_id ((atom_t)(544*2+1)) -#define ATOM_system_time ((atom_t)(545*2+1)) -#define ATOM_tan ((atom_t)(546*2+1)) -#define ATOM_temporary_files ((atom_t)(547*2+1)) -#define ATOM_term ((atom_t)(548*2+1)) -#define ATOM_term_expansion ((atom_t)(549*2+1)) -#define ATOM_term_position ((atom_t)(550*2+1)) -#define ATOM_terminal ((atom_t)(551*2+1)) -#define ATOM_terminal_capability ((atom_t)(552*2+1)) -#define ATOM_text ((atom_t)(553*2+1)) -#define ATOM_thread ((atom_t)(554*2+1)) -#define ATOM_thread_cputime ((atom_t)(555*2+1)) -#define ATOM_thread_initialization ((atom_t)(556*2+1)) -#define ATOM_thread_local ((atom_t)(557*2+1)) -#define ATOM_thread_local_procedure ((atom_t)(558*2+1)) -#define ATOM_thread_option ((atom_t)(559*2+1)) -#define ATOM_thread_property ((atom_t)(560*2+1)) -#define ATOM_threads ((atom_t)(561*2+1)) -#define ATOM_threads_created ((atom_t)(562*2+1)) -#define ATOM_throw ((atom_t)(563*2+1)) -#define ATOM_tilde ((atom_t)(564*2+1)) -#define ATOM_time ((atom_t)(565*2+1)) -#define ATOM_time_stamp ((atom_t)(566*2+1)) -#define ATOM_timeout ((atom_t)(567*2+1)) -#define ATOM_timeout_error ((atom_t)(568*2+1)) -#define ATOM_timezone ((atom_t)(569*2+1)) -#define ATOM_to_lower ((atom_t)(570*2+1)) -#define ATOM_to_upper ((atom_t)(571*2+1)) -#define ATOM_top ((atom_t)(572*2+1)) -#define ATOM_top_level ((atom_t)(573*2+1)) -#define ATOM_toplevel ((atom_t)(574*2+1)) -#define ATOM_trace ((atom_t)(575*2+1)) -#define ATOM_trace_any ((atom_t)(576*2+1)) -#define ATOM_trace_call ((atom_t)(577*2+1)) -#define ATOM_trace_exit ((atom_t)(578*2+1)) -#define ATOM_trace_fail ((atom_t)(579*2+1)) -#define ATOM_trace_gc ((atom_t)(580*2+1)) -#define ATOM_trace_redo ((atom_t)(581*2+1)) -#define ATOM_traceinterc ((atom_t)(582*2+1)) -#define ATOM_tracing ((atom_t)(583*2+1)) -#define ATOM_trail ((atom_t)(584*2+1)) -#define ATOM_trail_shifts ((atom_t)(585*2+1)) -#define ATOM_traillimit ((atom_t)(586*2+1)) -#define ATOM_trailused ((atom_t)(587*2+1)) -#define ATOM_transparent ((atom_t)(588*2+1)) -#define ATOM_transposed_char ((atom_t)(589*2+1)) -#define ATOM_transposed_word ((atom_t)(590*2+1)) -#define ATOM_true ((atom_t)(591*2+1)) -#define ATOM_truncate ((atom_t)(592*2+1)) -#define ATOM_tty ((atom_t)(593*2+1)) -#define ATOM_tty_control ((atom_t)(594*2+1)) -#define ATOM_type ((atom_t)(595*2+1)) -#define ATOM_type_error ((atom_t)(596*2+1)) -#define ATOM_undefined ((atom_t)(597*2+1)) -#define ATOM_undefined_global_variable ((atom_t)(598*2+1)) -#define ATOM_undefinterc ((atom_t)(599*2+1)) -#define ATOM_unicode_be ((atom_t)(600*2+1)) -#define ATOM_unicode_le ((atom_t)(601*2+1)) -#define ATOM_unify ((atom_t)(602*2+1)) -#define ATOM_unify_determined ((atom_t)(603*2+1)) -#define ATOM_uninstantiation_error ((atom_t)(604*2+1)) -#define ATOM_unique ((atom_t)(605*2+1)) -#define ATOM_univ ((atom_t)(606*2+1)) -#define ATOM_unknown ((atom_t)(607*2+1)) -#define ATOM_unlimited ((atom_t)(608*2+1)) -#define ATOM_unload ((atom_t)(609*2+1)) -#define ATOM_unlock ((atom_t)(610*2+1)) -#define ATOM_unlocked ((atom_t)(611*2+1)) -#define ATOM_update ((atom_t)(612*2+1)) -#define ATOM_upper ((atom_t)(613*2+1)) -#define ATOM_user ((atom_t)(614*2+1)) -#define ATOM_user_error ((atom_t)(615*2+1)) -#define ATOM_user_flags ((atom_t)(616*2+1)) -#define ATOM_user_input ((atom_t)(617*2+1)) -#define ATOM_user_output ((atom_t)(618*2+1)) -#define ATOM_utc ((atom_t)(619*2+1)) -#define ATOM_utf8 ((atom_t)(620*2+1)) -#define ATOM_v ((atom_t)(621*2+1)) -#define ATOM_var ((atom_t)(622*2+1)) -#define ATOM_variable ((atom_t)(623*2+1)) -#define ATOM_variable_names ((atom_t)(624*2+1)) -#define ATOM_variables ((atom_t)(625*2+1)) -#define ATOM_very_deep ((atom_t)(626*2+1)) -#define ATOM_vmi ((atom_t)(627*2+1)) -#define ATOM_volatile ((atom_t)(628*2+1)) -#define ATOM_wait ((atom_t)(629*2+1)) -#define ATOM_wakeup ((atom_t)(630*2+1)) -#define ATOM_walltime ((atom_t)(631*2+1)) -#define ATOM_warning ((atom_t)(632*2+1)) -#define ATOM_wchar_t ((atom_t)(633*2+1)) -#define ATOM_when_condition ((atom_t)(634*2+1)) -#define ATOM_white ((atom_t)(635*2+1)) -#define ATOM_write ((atom_t)(636*2+1)) -#define ATOM_write_attributes ((atom_t)(637*2+1)) -#define ATOM_write_option ((atom_t)(638*2+1)) -#define ATOM_xdigit ((atom_t)(639*2+1)) -#define ATOM_xf ((atom_t)(640*2+1)) -#define ATOM_xfx ((atom_t)(641*2+1)) -#define ATOM_xfy ((atom_t)(642*2+1)) -#define ATOM_xml ((atom_t)(643*2+1)) -#define ATOM_xor ((atom_t)(644*2+1)) -#define ATOM_xpceref ((atom_t)(645*2+1)) -#define ATOM_yf ((atom_t)(646*2+1)) -#define ATOM_yfx ((atom_t)(647*2+1)) -#define ATOM_zero_divisor ((atom_t)(648*2+1)) +#define ATOM_access_level ((atom_t)(4*2+1)) +#define ATOM_acos ((atom_t)(5*2+1)) +#define ATOM_acosh ((atom_t)(6*2+1)) +#define ATOM_acyclic_term ((atom_t)(7*2+1)) +#define ATOM_add_import ((atom_t)(8*2+1)) +#define ATOM_address ((atom_t)(9*2+1)) +#define ATOM_agc ((atom_t)(10*2+1)) +#define ATOM_agc_gained ((atom_t)(11*2+1)) +#define ATOM_agc_margin ((atom_t)(12*2+1)) +#define ATOM_agc_time ((atom_t)(13*2+1)) +#define ATOM_alias ((atom_t)(14*2+1)) +#define ATOM_allow_variable_name_as_functor ((atom_t)(15*2+1)) +#define ATOM_alnum ((atom_t)(16*2+1)) +#define ATOM_alpha ((atom_t)(17*2+1)) +#define ATOM_alternative ((atom_t)(18*2+1)) +#define ATOM_and ((atom_t)(19*2+1)) +#define ATOM_anonvar ((atom_t)(20*2+1)) +#define ATOM_append ((atom_t)(21*2+1)) +#define ATOM_ar_equals ((atom_t)(22*2+1)) +#define ATOM_ar_not_equal ((atom_t)(23*2+1)) +#define ATOM_arity ((atom_t)(24*2+1)) +#define ATOM_argument ((atom_t)(25*2+1)) +#define ATOM_argumentlimit ((atom_t)(26*2+1)) +#define ATOM_as ((atom_t)(27*2+1)) +#define ATOM_ascii ((atom_t)(28*2+1)) +#define ATOM_asin ((atom_t)(29*2+1)) +#define ATOM_asinh ((atom_t)(30*2+1)) +#define ATOM_assert ((atom_t)(31*2+1)) +#define ATOM_asserta ((atom_t)(32*2+1)) +#define ATOM_at ((atom_t)(33*2+1)) +#define ATOM_at_equals ((atom_t)(34*2+1)) +#define ATOM_at_exit ((atom_t)(35*2+1)) +#define ATOM_at_larger ((atom_t)(36*2+1)) +#define ATOM_at_larger_eq ((atom_t)(37*2+1)) +#define ATOM_at_not_equals ((atom_t)(38*2+1)) +#define ATOM_at_smaller ((atom_t)(39*2+1)) +#define ATOM_at_smaller_eq ((atom_t)(40*2+1)) +#define ATOM_atan ((atom_t)(41*2+1)) +#define ATOM_atanh ((atom_t)(42*2+1)) +#define ATOM_atan2 ((atom_t)(43*2+1)) +#define ATOM_atom ((atom_t)(44*2+1)) +#define ATOM_atom_garbage_collection ((atom_t)(45*2+1)) +#define ATOM_atomic ((atom_t)(46*2+1)) +#define ATOM_atoms ((atom_t)(47*2+1)) +#define ATOM_att ((atom_t)(48*2+1)) +#define ATOM_attributes ((atom_t)(49*2+1)) +#define ATOM_attvar ((atom_t)(50*2+1)) +#define ATOM_autoload ((atom_t)(51*2+1)) +#define ATOM_backquoted_string ((atom_t)(52*2+1)) +#define ATOM_backslash ((atom_t)(53*2+1)) +#define ATOM_backtrace ((atom_t)(54*2+1)) +#define ATOM_bar ((atom_t)(55*2+1)) +#define ATOM_base ((atom_t)(56*2+1)) +#define ATOM_begin ((atom_t)(57*2+1)) +#define ATOM_binary ((atom_t)(58*2+1)) +#define ATOM_binary_stream ((atom_t)(59*2+1)) +#define ATOM_bind ((atom_t)(60*2+1)) +#define ATOM_bitor ((atom_t)(61*2+1)) +#define ATOM_blobs ((atom_t)(62*2+1)) +#define ATOM_bof ((atom_t)(63*2+1)) +#define ATOM_bom ((atom_t)(64*2+1)) +#define ATOM_bool ((atom_t)(65*2+1)) +#define ATOM_boolean ((atom_t)(66*2+1)) +#define ATOM_brace_term_position ((atom_t)(67*2+1)) +#define ATOM_break ((atom_t)(68*2+1)) +#define ATOM_break_level ((atom_t)(69*2+1)) +#define ATOM_btree ((atom_t)(70*2+1)) +#define ATOM_buffer ((atom_t)(71*2+1)) +#define ATOM_buffer_size ((atom_t)(72*2+1)) +#define ATOM_built_in_procedure ((atom_t)(73*2+1)) +#define ATOM_busy ((atom_t)(74*2+1)) +#define ATOM_byte ((atom_t)(75*2+1)) +#define ATOM_c_stack ((atom_t)(76*2+1)) +#define ATOM_call ((atom_t)(77*2+1)) +#define ATOM_callable ((atom_t)(78*2+1)) +#define ATOM_callpred ((atom_t)(79*2+1)) +#define ATOM_canceled ((atom_t)(80*2+1)) +#define ATOM_case_sensitive_file_names ((atom_t)(81*2+1)) +#define ATOM_catch ((atom_t)(82*2+1)) +#define ATOM_category ((atom_t)(83*2+1)) +#define ATOM_ceil ((atom_t)(84*2+1)) +#define ATOM_ceiling ((atom_t)(85*2+1)) +#define ATOM_char_type ((atom_t)(86*2+1)) +#define ATOM_character ((atom_t)(87*2+1)) +#define ATOM_character_code ((atom_t)(88*2+1)) +#define ATOM_character_escapes ((atom_t)(89*2+1)) +#define ATOM_chars ((atom_t)(90*2+1)) +#define ATOM_chdir ((atom_t)(91*2+1)) +#define ATOM_chmod ((atom_t)(92*2+1)) +#define ATOM_choice ((atom_t)(93*2+1)) +#define ATOM_class ((atom_t)(94*2+1)) +#define ATOM_clause ((atom_t)(95*2+1)) +#define ATOM_clauses ((atom_t)(96*2+1)) +#define ATOM_clause_reference ((atom_t)(97*2+1)) +#define ATOM_close ((atom_t)(98*2+1)) +#define ATOM_close_on_abort ((atom_t)(99*2+1)) +#define ATOM_close_on_exec ((atom_t)(100*2+1)) +#define ATOM_close_option ((atom_t)(101*2+1)) +#define ATOM_cm ((atom_t)(102*2+1)) +#define ATOM_cntrl ((atom_t)(103*2+1)) +#define ATOM_co ((atom_t)(104*2+1)) +#define ATOM_codes ((atom_t)(105*2+1)) +#define ATOM_collected ((atom_t)(106*2+1)) +#define ATOM_collections ((atom_t)(107*2+1)) +#define ATOM_colon ((atom_t)(108*2+1)) +#define ATOM_comma ((atom_t)(109*2+1)) +#define ATOM_comments ((atom_t)(110*2+1)) +#define ATOM_compound ((atom_t)(111*2+1)) +#define ATOM_context ((atom_t)(112*2+1)) +#define ATOM_context_module ((atom_t)(113*2+1)) +#define ATOM_continue ((atom_t)(114*2+1)) +#define ATOM_copysign ((atom_t)(115*2+1)) +#define ATOM_core ((atom_t)(116*2+1)) +#define ATOM_core_left ((atom_t)(117*2+1)) +#define ATOM_cos ((atom_t)(118*2+1)) +#define ATOM_cosh ((atom_t)(119*2+1)) +#define ATOM_cputime ((atom_t)(120*2+1)) +#define ATOM_create ((atom_t)(121*2+1)) +#define ATOM_csym ((atom_t)(122*2+1)) +#define ATOM_csymf ((atom_t)(123*2+1)) +#define ATOM_cumulative ((atom_t)(124*2+1)) +#define ATOM_curl ((atom_t)(125*2+1)) +#define ATOM_current ((atom_t)(126*2+1)) +#define ATOM_current_input ((atom_t)(127*2+1)) +#define ATOM_current_output ((atom_t)(128*2+1)) +#define ATOM_cut ((atom_t)(129*2+1)) +#define ATOM_cut_call ((atom_t)(130*2+1)) +#define ATOM_cut_exit ((atom_t)(131*2+1)) +#define ATOM_cut_parent ((atom_t)(132*2+1)) +#define ATOM_cutted ((atom_t)(133*2+1)) +#define ATOM_cyclic_term ((atom_t)(134*2+1)) +#define ATOM_cycles ((atom_t)(135*2+1)) +#define ATOM_dand ((atom_t)(136*2+1)) +#define ATOM_date ((atom_t)(137*2+1)) +#define ATOM_db_reference ((atom_t)(138*2+1)) +#define ATOM_dc_call_prolog ((atom_t)(139*2+1)) +#define ATOM_dcall ((atom_t)(140*2+1)) +#define ATOM_dcall_cleanup ((atom_t)(141*2+1)) +#define ATOM_dcatch ((atom_t)(142*2+1)) +#define ATOM_dcut ((atom_t)(143*2+1)) +#define ATOM_dde_error ((atom_t)(144*2+1)) +#define ATOM_dde_handle ((atom_t)(145*2+1)) +#define ATOM_deadline ((atom_t)(146*2+1)) +#define ATOM_debug ((atom_t)(147*2+1)) +#define ATOM_debug_on_error ((atom_t)(148*2+1)) +#define ATOM_debug_topic ((atom_t)(149*2+1)) +#define ATOM_debugger_print_options ((atom_t)(150*2+1)) +#define ATOM_debugger_show_context ((atom_t)(151*2+1)) +#define ATOM_debugging ((atom_t)(152*2+1)) +#define ATOM_dec10 ((atom_t)(153*2+1)) +#define ATOM_default ((atom_t)(154*2+1)) +#define ATOM_defined ((atom_t)(155*2+1)) +#define ATOM_delete ((atom_t)(156*2+1)) +#define ATOM_depth_limit_exceeded ((atom_t)(157*2+1)) +#define ATOM_destroy ((atom_t)(158*2+1)) +#define ATOM_detached ((atom_t)(159*2+1)) +#define ATOM_detect ((atom_t)(160*2+1)) +#define ATOM_development ((atom_t)(161*2+1)) +#define ATOM_dexit ((atom_t)(162*2+1)) +#define ATOM_dforeign_registered ((atom_t)(163*2+1)) +#define ATOM_dgarbage_collect ((atom_t)(164*2+1)) +#define ATOM_digit ((atom_t)(165*2+1)) +#define ATOM_directory ((atom_t)(166*2+1)) +#define ATOM_discontiguous ((atom_t)(167*2+1)) +#define ATOM_div ((atom_t)(168*2+1)) +#define ATOM_gdiv ((atom_t)(169*2+1)) +#define ATOM_divide ((atom_t)(170*2+1)) +#define ATOM_dload ((atom_t)(171*2+1)) +#define ATOM_dmessage_queue ((atom_t)(172*2+1)) +#define ATOM_dmutex ((atom_t)(173*2+1)) +#define ATOM_domain_error ((atom_t)(174*2+1)) +#define ATOM_dos ((atom_t)(175*2+1)) +#define ATOM_dot ((atom_t)(176*2+1)) +#define ATOM_dots ((atom_t)(177*2+1)) +#define ATOM_double_quotes ((atom_t)(178*2+1)) +#define ATOM_doublestar ((atom_t)(179*2+1)) +#define ATOM_dprof_node ((atom_t)(180*2+1)) +#define ATOM_dquery_loop ((atom_t)(181*2+1)) +#define ATOM_drecover_and_rethrow ((atom_t)(182*2+1)) +#define ATOM_dstream ((atom_t)(183*2+1)) +#define ATOM_dthread_init ((atom_t)(184*2+1)) +#define ATOM_dthrow ((atom_t)(185*2+1)) +#define ATOM_dtime ((atom_t)(186*2+1)) +#define ATOM_dtoplevel ((atom_t)(187*2+1)) +#define ATOM_dvard ((atom_t)(188*2+1)) +#define ATOM_dwakeup ((atom_t)(189*2+1)) +#define ATOM_dynamic ((atom_t)(190*2+1)) +#define ATOM_e ((atom_t)(191*2+1)) +#define ATOM_encoding ((atom_t)(192*2+1)) +#define ATOM_end ((atom_t)(193*2+1)) +#define ATOM_end_of_file ((atom_t)(194*2+1)) +#define ATOM_end_of_line ((atom_t)(195*2+1)) +#define ATOM_end_of_stream ((atom_t)(196*2+1)) +#define ATOM_environment ((atom_t)(197*2+1)) +#define ATOM_eof ((atom_t)(198*2+1)) +#define ATOM_eof_action ((atom_t)(199*2+1)) +#define ATOM_eof_code ((atom_t)(200*2+1)) +#define ATOM_epsilon ((atom_t)(201*2+1)) +#define ATOM_equal ((atom_t)(202*2+1)) +#define ATOM_equals ((atom_t)(203*2+1)) +#define ATOM_erase ((atom_t)(204*2+1)) +#define ATOM_erased ((atom_t)(205*2+1)) +#define ATOM_error ((atom_t)(206*2+1)) +#define ATOM_eval ((atom_t)(207*2+1)) +#define ATOM_evaluable ((atom_t)(208*2+1)) +#define ATOM_evaluation_error ((atom_t)(209*2+1)) +#define ATOM_exception ((atom_t)(210*2+1)) +#define ATOM_exclusive ((atom_t)(211*2+1)) +#define ATOM_execute ((atom_t)(212*2+1)) +#define ATOM_exist ((atom_t)(213*2+1)) +#define ATOM_existence_error ((atom_t)(214*2+1)) +#define ATOM_exit ((atom_t)(215*2+1)) +#define ATOM_exited ((atom_t)(216*2+1)) +#define ATOM_exp ((atom_t)(217*2+1)) +#define ATOM_export ((atom_t)(218*2+1)) +#define ATOM_exported ((atom_t)(219*2+1)) +#define ATOM_exports ((atom_t)(220*2+1)) +#define ATOM_expression ((atom_t)(221*2+1)) +#define ATOM_external_exception ((atom_t)(222*2+1)) +#define ATOM_externals ((atom_t)(223*2+1)) +#define ATOM_fact ((atom_t)(224*2+1)) +#define ATOM_factor ((atom_t)(225*2+1)) +#define ATOM_fail ((atom_t)(226*2+1)) +#define ATOM_failure_error ((atom_t)(227*2+1)) +#define ATOM_false ((atom_t)(228*2+1)) +#define ATOM_feature ((atom_t)(229*2+1)) +#define ATOM_file ((atom_t)(230*2+1)) +#define ATOM_file_name ((atom_t)(231*2+1)) +#define ATOM_file_name_variables ((atom_t)(232*2+1)) +#define ATOM_file_no ((atom_t)(233*2+1)) +#define ATOM_flag ((atom_t)(234*2+1)) +#define ATOM_flag_value ((atom_t)(235*2+1)) +#define ATOM_float ((atom_t)(236*2+1)) +#define ATOM_float_format ((atom_t)(237*2+1)) +#define ATOM_float_fractional_part ((atom_t)(238*2+1)) +#define ATOM_float_integer_part ((atom_t)(239*2+1)) +#define ATOM_float_overflow ((atom_t)(240*2+1)) +#define ATOM_float_underflow ((atom_t)(241*2+1)) +#define ATOM_floor ((atom_t)(242*2+1)) +#define ATOM_force ((atom_t)(243*2+1)) +#define ATOM_foreign ((atom_t)(244*2+1)) +#define ATOM_foreign_function ((atom_t)(245*2+1)) +#define ATOM_foreign_return_value ((atom_t)(246*2+1)) +#define ATOM_fork ((atom_t)(247*2+1)) +#define ATOM_frame ((atom_t)(248*2+1)) +#define ATOM_frame_attribute ((atom_t)(249*2+1)) +#define ATOM_frame_finished ((atom_t)(250*2+1)) +#define ATOM_frame_reference ((atom_t)(251*2+1)) +#define ATOM_free_of_attvar ((atom_t)(252*2+1)) +#define ATOM_freeze ((atom_t)(253*2+1)) +#define ATOM_full ((atom_t)(254*2+1)) +#define ATOM_functor_name ((atom_t)(255*2+1)) +#define ATOM_functors ((atom_t)(256*2+1)) +#define ATOM_fx ((atom_t)(257*2+1)) +#define ATOM_fy ((atom_t)(258*2+1)) +#define ATOM_garbage_collected ((atom_t)(259*2+1)) +#define ATOM_garbage_collection ((atom_t)(260*2+1)) +#define ATOM_gc ((atom_t)(261*2+1)) +#define ATOM_gcd ((atom_t)(262*2+1)) +#define ATOM_gctime ((atom_t)(263*2+1)) +#define ATOM_getcwd ((atom_t)(264*2+1)) +#define ATOM_global ((atom_t)(265*2+1)) +#define ATOM_global_shifts ((atom_t)(266*2+1)) +#define ATOM_global_stack ((atom_t)(267*2+1)) +#define ATOM_globallimit ((atom_t)(268*2+1)) +#define ATOM_globalused ((atom_t)(269*2+1)) +#define ATOM_goal ((atom_t)(270*2+1)) +#define ATOM_goal_expansion ((atom_t)(271*2+1)) +#define ATOM_grammar ((atom_t)(272*2+1)) +#define ATOM_graph ((atom_t)(273*2+1)) +#define ATOM_ground ((atom_t)(274*2+1)) +#define ATOM_gvar ((atom_t)(275*2+1)) +#define ATOM_halt ((atom_t)(276*2+1)) +#define ATOM_has_alternatives ((atom_t)(277*2+1)) +#define ATOM_hash ((atom_t)(278*2+1)) +#define ATOM_hashed ((atom_t)(279*2+1)) +#define ATOM_hat ((atom_t)(280*2+1)) +#define ATOM_heapused ((atom_t)(281*2+1)) +#define ATOM_heap_gc ((atom_t)(282*2+1)) +#define ATOM_help ((atom_t)(283*2+1)) +#define ATOM_hidden ((atom_t)(284*2+1)) +#define ATOM_hide_childs ((atom_t)(285*2+1)) +#define ATOM_history_depth ((atom_t)(286*2+1)) +#define ATOM_ifthen ((atom_t)(287*2+1)) +#define ATOM_ignore ((atom_t)(288*2+1)) +#define ATOM_ignore_ops ((atom_t)(289*2+1)) +#define ATOM_import_into ((atom_t)(290*2+1)) +#define ATOM_import_type ((atom_t)(291*2+1)) +#define ATOM_imported ((atom_t)(292*2+1)) +#define ATOM_imported_procedure ((atom_t)(293*2+1)) +#define ATOM_index ((atom_t)(294*2+1)) +#define ATOM_indexed ((atom_t)(295*2+1)) +#define ATOM_inf ((atom_t)(296*2+1)) +#define ATOM_inferences ((atom_t)(297*2+1)) +#define ATOM_infinite ((atom_t)(298*2+1)) +#define ATOM_informational ((atom_t)(299*2+1)) +#define ATOM_init_file ((atom_t)(300*2+1)) +#define ATOM_initialization ((atom_t)(301*2+1)) +#define ATOM_input ((atom_t)(302*2+1)) +#define ATOM_inserted_char ((atom_t)(303*2+1)) +#define ATOM_instantiation_error ((atom_t)(304*2+1)) +#define ATOM_int ((atom_t)(305*2+1)) +#define ATOM_int64_t ((atom_t)(306*2+1)) +#define ATOM_int_overflow ((atom_t)(307*2+1)) +#define ATOM_integer ((atom_t)(308*2+1)) +#define ATOM_integer_expression ((atom_t)(309*2+1)) +#define ATOM_interrupt ((atom_t)(310*2+1)) +#define ATOM_io_error ((atom_t)(311*2+1)) +#define ATOM_io_mode ((atom_t)(312*2+1)) +#define ATOM_ioctl ((atom_t)(313*2+1)) +#define ATOM_is ((atom_t)(314*2+1)) +#define ATOM_iso ((atom_t)(315*2+1)) +#define ATOM_iso_latin_1 ((atom_t)(316*2+1)) +#define ATOM_isovar ((atom_t)(317*2+1)) +#define ATOM_join ((atom_t)(318*2+1)) +#define ATOM_jump ((atom_t)(319*2+1)) +#define ATOM_kernel ((atom_t)(320*2+1)) +#define ATOM_key ((atom_t)(321*2+1)) +#define ATOM_larger ((atom_t)(322*2+1)) +#define ATOM_larger_equal ((atom_t)(323*2+1)) +#define ATOM_level ((atom_t)(324*2+1)) +#define ATOM_li ((atom_t)(325*2+1)) +#define ATOM_library ((atom_t)(326*2+1)) +#define ATOM_limit ((atom_t)(327*2+1)) +#define ATOM_line ((atom_t)(328*2+1)) +#define ATOM_line_count ((atom_t)(329*2+1)) +#define ATOM_line_position ((atom_t)(330*2+1)) +#define ATOM_list ((atom_t)(331*2+1)) +#define ATOM_list_position ((atom_t)(332*2+1)) +#define ATOM_listing ((atom_t)(333*2+1)) +#define ATOM_local ((atom_t)(334*2+1)) +#define ATOM_local_shifts ((atom_t)(335*2+1)) +#define ATOM_local_stack ((atom_t)(336*2+1)) +#define ATOM_locale ((atom_t)(337*2+1)) +#define ATOM_locallimit ((atom_t)(338*2+1)) +#define ATOM_localused ((atom_t)(339*2+1)) +#define ATOM_lock ((atom_t)(340*2+1)) +#define ATOM_locked ((atom_t)(341*2+1)) +#define ATOM_log ((atom_t)(342*2+1)) +#define ATOM_log10 ((atom_t)(343*2+1)) +#define ATOM_long ((atom_t)(344*2+1)) +#define ATOM_loose ((atom_t)(345*2+1)) +#define ATOM_low ((atom_t)(346*2+1)) +#define ATOM_lower ((atom_t)(347*2+1)) +#define ATOM_lsb ((atom_t)(348*2+1)) +#define ATOM_lshift ((atom_t)(349*2+1)) +#define ATOM_main ((atom_t)(350*2+1)) +#define ATOM_mark ((atom_t)(351*2+1)) +#define ATOM_matches ((atom_t)(352*2+1)) +#define ATOM_max ((atom_t)(353*2+1)) +#define ATOM_max_arity ((atom_t)(354*2+1)) +#define ATOM_max_dde_handles ((atom_t)(355*2+1)) +#define ATOM_max_depth ((atom_t)(356*2+1)) +#define ATOM_max_files ((atom_t)(357*2+1)) +#define ATOM_max_frame_size ((atom_t)(358*2+1)) +#define ATOM_max_length ((atom_t)(359*2+1)) +#define ATOM_max_path_length ((atom_t)(360*2+1)) +#define ATOM_max_size ((atom_t)(361*2+1)) +#define ATOM_max_variable_length ((atom_t)(362*2+1)) +#define ATOM_memory ((atom_t)(363*2+1)) +#define ATOM_message ((atom_t)(364*2+1)) +#define ATOM_message_lines ((atom_t)(365*2+1)) +#define ATOM_message_queue ((atom_t)(366*2+1)) +#define ATOM_message_queue_property ((atom_t)(367*2+1)) +#define ATOM_meta_argument ((atom_t)(368*2+1)) +#define ATOM_meta_argument_specifier ((atom_t)(369*2+1)) +#define ATOM_meta_predicate ((atom_t)(370*2+1)) +#define ATOM_min ((atom_t)(371*2+1)) +#define ATOM_min_free ((atom_t)(372*2+1)) +#define ATOM_minus ((atom_t)(373*2+1)) +#define ATOM_mismatched_char ((atom_t)(374*2+1)) +#define ATOM_mod ((atom_t)(375*2+1)) +#define ATOM_mode ((atom_t)(376*2+1)) +#define ATOM_modify ((atom_t)(377*2+1)) +#define ATOM_module ((atom_t)(378*2+1)) +#define ATOM_module_class ((atom_t)(379*2+1)) +#define ATOM_module_property ((atom_t)(380*2+1)) +#define ATOM_module_transparent ((atom_t)(381*2+1)) +#define ATOM_modules ((atom_t)(382*2+1)) +#define ATOM_msb ((atom_t)(383*2+1)) +#define ATOM_multifile ((atom_t)(384*2+1)) +#define ATOM_mutex ((atom_t)(385*2+1)) +#define ATOM_mutex_option ((atom_t)(386*2+1)) +#define ATOM_mutex_property ((atom_t)(387*2+1)) +#define ATOM_natural ((atom_t)(388*2+1)) +#define ATOM_newline ((atom_t)(389*2+1)) +#define ATOM_next_argument ((atom_t)(390*2+1)) +#define ATOM_nil ((atom_t)(391*2+1)) +#define ATOM_nlink ((atom_t)(392*2+1)) +#define ATOM_no_memory ((atom_t)(393*2+1)) +#define ATOM_nodebug ((atom_t)(394*2+1)) +#define ATOM_non_empty_list ((atom_t)(395*2+1)) +#define ATOM_none ((atom_t)(396*2+1)) +#define ATOM_nonvar ((atom_t)(397*2+1)) +#define ATOM_noprofile ((atom_t)(398*2+1)) +#define ATOM_normal ((atom_t)(399*2+1)) +#define ATOM_not ((atom_t)(400*2+1)) +#define ATOM_not_equals ((atom_t)(401*2+1)) +#define ATOM_not_implemented ((atom_t)(402*2+1)) +#define ATOM_not_less_than_one ((atom_t)(403*2+1)) +#define ATOM_not_less_than_zero ((atom_t)(404*2+1)) +#define ATOM_not_provable ((atom_t)(405*2+1)) +#define ATOM_not_strict_equal ((atom_t)(406*2+1)) +#define ATOM_not_unique ((atom_t)(407*2+1)) +#define ATOM_number ((atom_t)(408*2+1)) +#define ATOM_number_of_clauses ((atom_t)(409*2+1)) +#define ATOM_number_of_rules ((atom_t)(410*2+1)) +#define ATOM_numbervar_option ((atom_t)(411*2+1)) +#define ATOM_numbervars ((atom_t)(412*2+1)) +#define ATOM_occurs_check ((atom_t)(413*2+1)) +#define ATOM_octet ((atom_t)(414*2+1)) +#define ATOM_off ((atom_t)(415*2+1)) +#define ATOM_on ((atom_t)(416*2+1)) +#define ATOM_open ((atom_t)(417*2+1)) +#define ATOM_operator ((atom_t)(418*2+1)) +#define ATOM_operator_priority ((atom_t)(419*2+1)) +#define ATOM_operator_specifier ((atom_t)(420*2+1)) +#define ATOM_optimise ((atom_t)(421*2+1)) +#define ATOM_or ((atom_t)(422*2+1)) +#define ATOM_order ((atom_t)(423*2+1)) +#define ATOM_output ((atom_t)(424*2+1)) +#define ATOM_owner ((atom_t)(425*2+1)) +#define ATOM_pair ((atom_t)(426*2+1)) +#define ATOM_paren ((atom_t)(427*2+1)) +#define ATOM_parent ((atom_t)(428*2+1)) +#define ATOM_parent_goal ((atom_t)(429*2+1)) +#define ATOM_partial ((atom_t)(430*2+1)) +#define ATOM_past ((atom_t)(431*2+1)) +#define ATOM_past_end_of_stream ((atom_t)(432*2+1)) +#define ATOM_pattern ((atom_t)(433*2+1)) +#define ATOM_pc ((atom_t)(434*2+1)) +#define ATOM_peek ((atom_t)(435*2+1)) +#define ATOM_period ((atom_t)(436*2+1)) +#define ATOM_permission_error ((atom_t)(437*2+1)) +#define ATOM_pi ((atom_t)(438*2+1)) +#define ATOM_pipe ((atom_t)(439*2+1)) +#define ATOM_plain ((atom_t)(440*2+1)) +#define ATOM_plus ((atom_t)(441*2+1)) +#define ATOM_popcount ((atom_t)(442*2+1)) +#define ATOM_portray ((atom_t)(443*2+1)) +#define ATOM_portray_goal ((atom_t)(444*2+1)) +#define ATOM_position ((atom_t)(445*2+1)) +#define ATOM_posix ((atom_t)(446*2+1)) +#define ATOM_powm ((atom_t)(447*2+1)) +#define ATOM_predicate_indicator ((atom_t)(448*2+1)) +#define ATOM_predicates ((atom_t)(449*2+1)) +#define ATOM_print ((atom_t)(450*2+1)) +#define ATOM_print_message ((atom_t)(451*2+1)) +#define ATOM_priority ((atom_t)(452*2+1)) +#define ATOM_private_procedure ((atom_t)(453*2+1)) +#define ATOM_procedure ((atom_t)(454*2+1)) +#define ATOM_process_comment ((atom_t)(455*2+1)) +#define ATOM_process_cputime ((atom_t)(456*2+1)) +#define ATOM_profile_mode ((atom_t)(457*2+1)) +#define ATOM_profile_no_cpu_time ((atom_t)(458*2+1)) +#define ATOM_profile_node ((atom_t)(459*2+1)) +#define ATOM_program ((atom_t)(460*2+1)) +#define ATOM_program_counter ((atom_t)(461*2+1)) +#define ATOM_prolog ((atom_t)(462*2+1)) +#define ATOM_prolog_flag ((atom_t)(463*2+1)) +#define ATOM_prolog_flag_access ((atom_t)(464*2+1)) +#define ATOM_prolog_flag_option ((atom_t)(465*2+1)) +#define ATOM_prolog_flag_type ((atom_t)(466*2+1)) +#define ATOM_prompt ((atom_t)(467*2+1)) +#define ATOM_property ((atom_t)(468*2+1)) +#define ATOM_protocol ((atom_t)(469*2+1)) +#define ATOM_prove ((atom_t)(470*2+1)) +#define ATOM_public ((atom_t)(471*2+1)) +#define ATOM_punct ((atom_t)(472*2+1)) +#define ATOM_query ((atom_t)(473*2+1)) +#define ATOM_question_mark ((atom_t)(474*2+1)) +#define ATOM_queue_option ((atom_t)(475*2+1)) +#define ATOM_quiet ((atom_t)(476*2+1)) +#define ATOM_quote ((atom_t)(477*2+1)) +#define ATOM_quoted ((atom_t)(478*2+1)) +#define ATOM_radix ((atom_t)(479*2+1)) +#define ATOM_random ((atom_t)(480*2+1)) +#define ATOM_random_float ((atom_t)(481*2+1)) +#define ATOM_random_option ((atom_t)(482*2+1)) +#define ATOM_rational ((atom_t)(483*2+1)) +#define ATOM_rationalize ((atom_t)(484*2+1)) +#define ATOM_rdiv ((atom_t)(485*2+1)) +#define ATOM_read ((atom_t)(486*2+1)) +#define ATOM_read_only ((atom_t)(487*2+1)) +#define ATOM_read_option ((atom_t)(488*2+1)) +#define ATOM_read_write ((atom_t)(489*2+1)) +#define ATOM_readline ((atom_t)(490*2+1)) +#define ATOM_real_time ((atom_t)(491*2+1)) +#define ATOM_receiver ((atom_t)(492*2+1)) +#define ATOM_record ((atom_t)(493*2+1)) +#define ATOM_record_position ((atom_t)(494*2+1)) +#define ATOM_redefine ((atom_t)(495*2+1)) +#define ATOM_redo ((atom_t)(496*2+1)) +#define ATOM_redo_in_skip ((atom_t)(497*2+1)) +#define ATOM_references ((atom_t)(498*2+1)) +#define ATOM_rem ((atom_t)(499*2+1)) +#define ATOM_rename ((atom_t)(500*2+1)) +#define ATOM_report_error ((atom_t)(501*2+1)) +#define ATOM_reposition ((atom_t)(502*2+1)) +#define ATOM_representation_error ((atom_t)(503*2+1)) +#define ATOM_representation_errors ((atom_t)(504*2+1)) +#define ATOM_reset ((atom_t)(505*2+1)) +#define ATOM_resource_error ((atom_t)(506*2+1)) +#define ATOM_resource_handle ((atom_t)(507*2+1)) +#define ATOM_retry ((atom_t)(508*2+1)) +#define ATOM_round ((atom_t)(509*2+1)) +#define ATOM_rshift ((atom_t)(510*2+1)) +#define ATOM_running ((atom_t)(511*2+1)) +#define ATOM_runtime ((atom_t)(512*2+1)) +#define ATOM_save_class ((atom_t)(513*2+1)) +#define ATOM_save_option ((atom_t)(514*2+1)) +#define ATOM_see ((atom_t)(515*2+1)) +#define ATOM_seed ((atom_t)(516*2+1)) +#define ATOM_seek_method ((atom_t)(517*2+1)) +#define ATOM_select ((atom_t)(518*2+1)) +#define ATOM_semicolon ((atom_t)(519*2+1)) +#define ATOM_separated ((atom_t)(520*2+1)) +#define ATOM_set ((atom_t)(521*2+1)) +#define ATOM_set_end_of_stream ((atom_t)(522*2+1)) +#define ATOM_setup_call_catcher_cleanup ((atom_t)(523*2+1)) +#define ATOM_shared ((atom_t)(524*2+1)) +#define ATOM_shared_object ((atom_t)(525*2+1)) +#define ATOM_shared_object_handle ((atom_t)(526*2+1)) +#define ATOM_shell ((atom_t)(527*2+1)) +#define ATOM_shift_time ((atom_t)(528*2+1)) +#define ATOM_sign ((atom_t)(529*2+1)) +#define ATOM_signal ((atom_t)(530*2+1)) +#define ATOM_signal_handler ((atom_t)(531*2+1)) +#define ATOM_silent ((atom_t)(532*2+1)) +#define ATOM_sin ((atom_t)(533*2+1)) +#define ATOM_singletons ((atom_t)(534*2+1)) +#define ATOM_sinh ((atom_t)(535*2+1)) +#define ATOM_size ((atom_t)(536*2+1)) +#define ATOM_size_t ((atom_t)(537*2+1)) +#define ATOM_skip ((atom_t)(538*2+1)) +#define ATOM_skipped ((atom_t)(539*2+1)) +#define ATOM_smaller ((atom_t)(540*2+1)) +#define ATOM_smaller_equal ((atom_t)(541*2+1)) +#define ATOM_softcut ((atom_t)(542*2+1)) +#define ATOM_source_sink ((atom_t)(543*2+1)) +#define ATOM_space ((atom_t)(544*2+1)) +#define ATOM_spacing ((atom_t)(545*2+1)) +#define ATOM_spare ((atom_t)(546*2+1)) +#define ATOM_spy ((atom_t)(547*2+1)) +#define ATOM_sqrt ((atom_t)(548*2+1)) +#define ATOM_stack ((atom_t)(549*2+1)) +#define ATOM_stack_parameter ((atom_t)(550*2+1)) +#define ATOM_stack_shifts ((atom_t)(551*2+1)) +#define ATOM_stacks ((atom_t)(552*2+1)) +#define ATOM_stand_alone ((atom_t)(553*2+1)) +#define ATOM_standard ((atom_t)(554*2+1)) +#define ATOM_star ((atom_t)(555*2+1)) +#define ATOM_start ((atom_t)(556*2+1)) +#define ATOM_stat ((atom_t)(557*2+1)) +#define ATOM_state ((atom_t)(558*2+1)) +#define ATOM_static_procedure ((atom_t)(559*2+1)) +#define ATOM_statistics ((atom_t)(560*2+1)) +#define ATOM_status ((atom_t)(561*2+1)) +#define ATOM_stderr ((atom_t)(562*2+1)) +#define ATOM_stream ((atom_t)(563*2+1)) +#define ATOM_stream_option ((atom_t)(564*2+1)) +#define ATOM_stream_or_alias ((atom_t)(565*2+1)) +#define ATOM_stream_pair ((atom_t)(566*2+1)) +#define ATOM_stream_position ((atom_t)(567*2+1)) +#define ATOM_stream_property ((atom_t)(568*2+1)) +#define ATOM_stream_type_check ((atom_t)(569*2+1)) +#define ATOM_strict_equal ((atom_t)(570*2+1)) +#define ATOM_string ((atom_t)(571*2+1)) +#define ATOM_string_position ((atom_t)(572*2+1)) +#define ATOM_strong ((atom_t)(573*2+1)) +#define ATOM_subterm_positions ((atom_t)(574*2+1)) +#define ATOM_suffix ((atom_t)(575*2+1)) +#define ATOM_syntax_error ((atom_t)(576*2+1)) +#define ATOM_syntax_errors ((atom_t)(577*2+1)) +#define ATOM_system ((atom_t)(578*2+1)) +#define ATOM_system_error ((atom_t)(579*2+1)) +#define ATOM_system_init_file ((atom_t)(580*2+1)) +#define ATOM_system_thread_id ((atom_t)(581*2+1)) +#define ATOM_system_time ((atom_t)(582*2+1)) +#define ATOM_tan ((atom_t)(583*2+1)) +#define ATOM_tanh ((atom_t)(584*2+1)) +#define ATOM_temporary_files ((atom_t)(585*2+1)) +#define ATOM_term ((atom_t)(586*2+1)) +#define ATOM_term_expansion ((atom_t)(587*2+1)) +#define ATOM_term_position ((atom_t)(588*2+1)) +#define ATOM_terminal ((atom_t)(589*2+1)) +#define ATOM_terminal_capability ((atom_t)(590*2+1)) +#define ATOM_test ((atom_t)(591*2+1)) +#define ATOM_text ((atom_t)(592*2+1)) +#define ATOM_text_stream ((atom_t)(593*2+1)) +#define ATOM_thread ((atom_t)(594*2+1)) +#define ATOM_thread_cputime ((atom_t)(595*2+1)) +#define ATOM_thread_get_message_option ((atom_t)(596*2+1)) +#define ATOM_thread_initialization ((atom_t)(597*2+1)) +#define ATOM_thread_local ((atom_t)(598*2+1)) +#define ATOM_thread_local_procedure ((atom_t)(599*2+1)) +#define ATOM_thread_option ((atom_t)(600*2+1)) +#define ATOM_thread_property ((atom_t)(601*2+1)) +#define ATOM_threads ((atom_t)(602*2+1)) +#define ATOM_threads_created ((atom_t)(603*2+1)) +#define ATOM_throw ((atom_t)(604*2+1)) +#define ATOM_tilde ((atom_t)(605*2+1)) +#define ATOM_time ((atom_t)(606*2+1)) +#define ATOM_time_stamp ((atom_t)(607*2+1)) +#define ATOM_timeout ((atom_t)(608*2+1)) +#define ATOM_timeout_error ((atom_t)(609*2+1)) +#define ATOM_timezone ((atom_t)(610*2+1)) +#define ATOM_to_lower ((atom_t)(611*2+1)) +#define ATOM_to_upper ((atom_t)(612*2+1)) +#define ATOM_top ((atom_t)(613*2+1)) +#define ATOM_top_level ((atom_t)(614*2+1)) +#define ATOM_toplevel ((atom_t)(615*2+1)) +#define ATOM_trace ((atom_t)(616*2+1)) +#define ATOM_trace_any ((atom_t)(617*2+1)) +#define ATOM_trace_call ((atom_t)(618*2+1)) +#define ATOM_trace_exit ((atom_t)(619*2+1)) +#define ATOM_trace_fail ((atom_t)(620*2+1)) +#define ATOM_trace_gc ((atom_t)(621*2+1)) +#define ATOM_trace_redo ((atom_t)(622*2+1)) +#define ATOM_traceinterc ((atom_t)(623*2+1)) +#define ATOM_tracing ((atom_t)(624*2+1)) +#define ATOM_trail ((atom_t)(625*2+1)) +#define ATOM_trail_shifts ((atom_t)(626*2+1)) +#define ATOM_traillimit ((atom_t)(627*2+1)) +#define ATOM_trailused ((atom_t)(628*2+1)) +#define ATOM_transparent ((atom_t)(629*2+1)) +#define ATOM_transposed_char ((atom_t)(630*2+1)) +#define ATOM_transposed_word ((atom_t)(631*2+1)) +#define ATOM_true ((atom_t)(632*2+1)) +#define ATOM_truncate ((atom_t)(633*2+1)) +#define ATOM_tty ((atom_t)(634*2+1)) +#define ATOM_tty_control ((atom_t)(635*2+1)) +#define ATOM_type ((atom_t)(636*2+1)) +#define ATOM_type_error ((atom_t)(637*2+1)) +#define ATOM_undefined ((atom_t)(638*2+1)) +#define ATOM_undefined_global_variable ((atom_t)(639*2+1)) +#define ATOM_undefinterc ((atom_t)(640*2+1)) +#define ATOM_unicode_be ((atom_t)(641*2+1)) +#define ATOM_unicode_le ((atom_t)(642*2+1)) +#define ATOM_unify ((atom_t)(643*2+1)) +#define ATOM_unify_determined ((atom_t)(644*2+1)) +#define ATOM_uninstantiation_error ((atom_t)(645*2+1)) +#define ATOM_unique ((atom_t)(646*2+1)) +#define ATOM_univ ((atom_t)(647*2+1)) +#define ATOM_unknown ((atom_t)(648*2+1)) +#define ATOM_unlimited ((atom_t)(649*2+1)) +#define ATOM_unload ((atom_t)(650*2+1)) +#define ATOM_unlock ((atom_t)(651*2+1)) +#define ATOM_unlocked ((atom_t)(652*2+1)) +#define ATOM_update ((atom_t)(653*2+1)) +#define ATOM_upper ((atom_t)(654*2+1)) +#define ATOM_user ((atom_t)(655*2+1)) +#define ATOM_user_error ((atom_t)(656*2+1)) +#define ATOM_user_flags ((atom_t)(657*2+1)) +#define ATOM_user_input ((atom_t)(658*2+1)) +#define ATOM_user_output ((atom_t)(659*2+1)) +#define ATOM_utc ((atom_t)(660*2+1)) +#define ATOM_utf8 ((atom_t)(661*2+1)) +#define ATOM_v ((atom_t)(662*2+1)) +#define ATOM_var ((atom_t)(663*2+1)) +#define ATOM_variable ((atom_t)(664*2+1)) +#define ATOM_variable_names ((atom_t)(665*2+1)) +#define ATOM_variables ((atom_t)(666*2+1)) +#define ATOM_very_deep ((atom_t)(667*2+1)) +#define ATOM_vmi ((atom_t)(668*2+1)) +#define ATOM_volatile ((atom_t)(669*2+1)) +#define ATOM_wait ((atom_t)(670*2+1)) +#define ATOM_wakeup ((atom_t)(671*2+1)) +#define ATOM_walltime ((atom_t)(672*2+1)) +#define ATOM_warning ((atom_t)(673*2+1)) +#define ATOM_weak ((atom_t)(674*2+1)) +#define ATOM_wchar_t ((atom_t)(675*2+1)) +#define ATOM_when_condition ((atom_t)(676*2+1)) +#define ATOM_white ((atom_t)(677*2+1)) +#define ATOM_write ((atom_t)(678*2+1)) +#define ATOM_write_attributes ((atom_t)(679*2+1)) +#define ATOM_write_option ((atom_t)(680*2+1)) +#define ATOM_xdigit ((atom_t)(681*2+1)) +#define ATOM_xf ((atom_t)(682*2+1)) +#define ATOM_xfx ((atom_t)(683*2+1)) +#define ATOM_xfy ((atom_t)(684*2+1)) +#define ATOM_xml ((atom_t)(685*2+1)) +#define ATOM_xor ((atom_t)(686*2+1)) +#define ATOM_xpceref ((atom_t)(687*2+1)) +#define ATOM_yf ((atom_t)(688*2+1)) +#define ATOM_yfx ((atom_t)(689*2+1)) +#define ATOM_zero_divisor ((atom_t)(690*2+1)) #define FUNCTOR_abs1 ((functor_t)(0*4+2)) #define FUNCTOR_access1 ((functor_t)(1*4+2)) #define FUNCTOR_acos1 ((functor_t)(2*4+2)) -#define FUNCTOR_alias1 ((functor_t)(3*4+2)) -#define FUNCTOR_and2 ((functor_t)(4*4+2)) -#define FUNCTOR_ar_equals2 ((functor_t)(5*4+2)) -#define FUNCTOR_ar_not_equal2 ((functor_t)(6*4+2)) -#define FUNCTOR_asin1 ((functor_t)(7*4+2)) -#define FUNCTOR_assert1 ((functor_t)(8*4+2)) -#define FUNCTOR_asserta1 ((functor_t)(9*4+2)) -#define FUNCTOR_atan1 ((functor_t)(10*4+2)) -#define FUNCTOR_atan2 ((functor_t)(11*4+2)) -#define FUNCTOR_atan22 ((functor_t)(12*4+2)) -#define FUNCTOR_atom1 ((functor_t)(13*4+2)) -#define FUNCTOR_att3 ((functor_t)(14*4+2)) -#define FUNCTOR_backslash1 ((functor_t)(15*4+2)) -#define FUNCTOR_bar2 ((functor_t)(16*4+2)) -#define FUNCTOR_bitor2 ((functor_t)(17*4+2)) -#define FUNCTOR_bom1 ((functor_t)(18*4+2)) -#define FUNCTOR_brace_term_position3 ((functor_t)(19*4+2)) -#define FUNCTOR_break1 ((functor_t)(20*4+2)) -#define FUNCTOR_break2 ((functor_t)(21*4+2)) -#define FUNCTOR_break3 ((functor_t)(22*4+2)) -#define FUNCTOR_buffer1 ((functor_t)(23*4+2)) -#define FUNCTOR_buffer_size1 ((functor_t)(24*4+2)) -#define FUNCTOR_busy2 ((functor_t)(25*4+2)) -#define FUNCTOR_call1 ((functor_t)(26*4+2)) -#define FUNCTOR_callpred2 ((functor_t)(27*4+2)) -#define FUNCTOR_catch3 ((functor_t)(28*4+2)) -#define FUNCTOR_ceil1 ((functor_t)(29*4+2)) -#define FUNCTOR_ceiling1 ((functor_t)(30*4+2)) -#define FUNCTOR_chars1 ((functor_t)(31*4+2)) -#define FUNCTOR_chars2 ((functor_t)(32*4+2)) -#define FUNCTOR_clause1 ((functor_t)(33*4+2)) -#define FUNCTOR_close_on_abort1 ((functor_t)(34*4+2)) -#define FUNCTOR_close_on_exec1 ((functor_t)(35*4+2)) -#define FUNCTOR_codes1 ((functor_t)(36*4+2)) -#define FUNCTOR_codes2 ((functor_t)(37*4+2)) -#define FUNCTOR_colon2 ((functor_t)(38*4+2)) -#define FUNCTOR_comma2 ((functor_t)(39*4+2)) -#define FUNCTOR_context2 ((functor_t)(40*4+2)) -#define FUNCTOR_cos1 ((functor_t)(41*4+2)) -#define FUNCTOR_cputime0 ((functor_t)(42*4+2)) -#define FUNCTOR_curl1 ((functor_t)(43*4+2)) -#define FUNCTOR_cut_call1 ((functor_t)(44*4+2)) -#define FUNCTOR_cut_exit1 ((functor_t)(45*4+2)) -#define FUNCTOR_dand2 ((functor_t)(46*4+2)) -#define FUNCTOR_date3 ((functor_t)(47*4+2)) -#define FUNCTOR_date9 ((functor_t)(48*4+2)) -#define FUNCTOR_dc_call_prolog0 ((functor_t)(49*4+2)) -#define FUNCTOR_dcall1 ((functor_t)(50*4+2)) -#define FUNCTOR_dcut1 ((functor_t)(51*4+2)) -#define FUNCTOR_dde_error2 ((functor_t)(52*4+2)) -#define FUNCTOR_debugging1 ((functor_t)(53*4+2)) -#define FUNCTOR_detached1 ((functor_t)(54*4+2)) -#define FUNCTOR_dexit2 ((functor_t)(55*4+2)) -#define FUNCTOR_dforeign_registered2 ((functor_t)(56*4+2)) -#define FUNCTOR_dgarbage_collect1 ((functor_t)(57*4+2)) -#define FUNCTOR_div2 ((functor_t)(58*4+2)) -#define FUNCTOR_gdiv2 ((functor_t)(59*4+2)) -#define FUNCTOR_divide2 ((functor_t)(60*4+2)) -#define FUNCTOR_dmessage_queue1 ((functor_t)(61*4+2)) -#define FUNCTOR_dmutex1 ((functor_t)(62*4+2)) -#define FUNCTOR_domain_error2 ((functor_t)(63*4+2)) -#define FUNCTOR_dot2 ((functor_t)(64*4+2)) -#define FUNCTOR_doublestar2 ((functor_t)(65*4+2)) -#define FUNCTOR_dprof_node1 ((functor_t)(66*4+2)) -#define FUNCTOR_drecover_and_rethrow2 ((functor_t)(67*4+2)) -#define FUNCTOR_dstream1 ((functor_t)(68*4+2)) -#define FUNCTOR_dthread_init0 ((functor_t)(69*4+2)) -#define FUNCTOR_dthrow1 ((functor_t)(70*4+2)) -#define FUNCTOR_dtime2 ((functor_t)(71*4+2)) -#define FUNCTOR_dvard1 ((functor_t)(72*4+2)) -#define FUNCTOR_dwakeup1 ((functor_t)(73*4+2)) -#define FUNCTOR_e0 ((functor_t)(74*4+2)) -#define FUNCTOR_encoding1 ((functor_t)(75*4+2)) -#define FUNCTOR_end_of_stream1 ((functor_t)(76*4+2)) -#define FUNCTOR_eof_action1 ((functor_t)(77*4+2)) -#define FUNCTOR_epsilon0 ((functor_t)(78*4+2)) -#define FUNCTOR_equals2 ((functor_t)(79*4+2)) -#define FUNCTOR_erased1 ((functor_t)(80*4+2)) -#define FUNCTOR_error2 ((functor_t)(81*4+2)) -#define FUNCTOR_eval1 ((functor_t)(82*4+2)) -#define FUNCTOR_evaluation_error1 ((functor_t)(83*4+2)) -#define FUNCTOR_exception1 ((functor_t)(84*4+2)) -#define FUNCTOR_exception3 ((functor_t)(85*4+2)) -#define FUNCTOR_existence_error2 ((functor_t)(86*4+2)) -#define FUNCTOR_exited1 ((functor_t)(87*4+2)) -#define FUNCTOR_exp1 ((functor_t)(88*4+2)) -#define FUNCTOR_exports1 ((functor_t)(89*4+2)) -#define FUNCTOR_external_exception1 ((functor_t)(90*4+2)) -#define FUNCTOR_fail0 ((functor_t)(91*4+2)) -#define FUNCTOR_failure_error1 ((functor_t)(92*4+2)) -#define FUNCTOR_file1 ((functor_t)(93*4+2)) -#define FUNCTOR_file4 ((functor_t)(94*4+2)) -#define FUNCTOR_file_name1 ((functor_t)(95*4+2)) -#define FUNCTOR_file_no1 ((functor_t)(96*4+2)) -#define FUNCTOR_float1 ((functor_t)(97*4+2)) -#define FUNCTOR_float_fractional_part1 ((functor_t)(98*4+2)) -#define FUNCTOR_float_integer_part1 ((functor_t)(99*4+2)) -#define FUNCTOR_floor1 ((functor_t)(100*4+2)) -#define FUNCTOR_foreign_function1 ((functor_t)(101*4+2)) -#define FUNCTOR_frame3 ((functor_t)(102*4+2)) -#define FUNCTOR_frame_finished1 ((functor_t)(103*4+2)) -#define FUNCTOR_gcd2 ((functor_t)(104*4+2)) -#define FUNCTOR_goal_expansion2 ((functor_t)(105*4+2)) -#define FUNCTOR_ground1 ((functor_t)(106*4+2)) -#define FUNCTOR_hat2 ((functor_t)(107*4+2)) -#define FUNCTOR_ifthen2 ((functor_t)(108*4+2)) -#define FUNCTOR_input0 ((functor_t)(109*4+2)) -#define FUNCTOR_integer1 ((functor_t)(110*4+2)) -#define FUNCTOR_interrupt1 ((functor_t)(111*4+2)) -#define FUNCTOR_io_error2 ((functor_t)(112*4+2)) -#define FUNCTOR_is2 ((functor_t)(113*4+2)) -#define FUNCTOR_isovar1 ((functor_t)(114*4+2)) -#define FUNCTOR_larger2 ((functor_t)(115*4+2)) -#define FUNCTOR_larger_equal2 ((functor_t)(116*4+2)) -#define FUNCTOR_line_count1 ((functor_t)(117*4+2)) -#define FUNCTOR_list_position4 ((functor_t)(118*4+2)) -#define FUNCTOR_listing1 ((functor_t)(119*4+2)) -#define FUNCTOR_locked2 ((functor_t)(120*4+2)) -#define FUNCTOR_log1 ((functor_t)(121*4+2)) -#define FUNCTOR_log101 ((functor_t)(122*4+2)) -#define FUNCTOR_lsb1 ((functor_t)(123*4+2)) -#define FUNCTOR_lshift2 ((functor_t)(124*4+2)) -#define FUNCTOR_max2 ((functor_t)(125*4+2)) -#define FUNCTOR_max_size1 ((functor_t)(126*4+2)) -#define FUNCTOR_message_lines1 ((functor_t)(127*4+2)) -#define FUNCTOR_min2 ((functor_t)(128*4+2)) -#define FUNCTOR_minus1 ((functor_t)(129*4+2)) -#define FUNCTOR_minus2 ((functor_t)(130*4+2)) -#define FUNCTOR_mod2 ((functor_t)(131*4+2)) -#define FUNCTOR_mode1 ((functor_t)(132*4+2)) -#define FUNCTOR_msb1 ((functor_t)(133*4+2)) -#define FUNCTOR_newline1 ((functor_t)(134*4+2)) -#define FUNCTOR_nlink1 ((functor_t)(135*4+2)) -#define FUNCTOR_nonvar1 ((functor_t)(136*4+2)) -#define FUNCTOR_not_implemented2 ((functor_t)(137*4+2)) -#define FUNCTOR_not_provable1 ((functor_t)(138*4+2)) -#define FUNCTOR_occurs_check2 ((functor_t)(139*4+2)) -#define FUNCTOR_or1 ((functor_t)(140*4+2)) -#define FUNCTOR_output0 ((functor_t)(141*4+2)) -#define FUNCTOR_permission_error3 ((functor_t)(142*4+2)) -#define FUNCTOR_pi0 ((functor_t)(143*4+2)) -#define FUNCTOR_pipe1 ((functor_t)(144*4+2)) -#define FUNCTOR_plus1 ((functor_t)(145*4+2)) -#define FUNCTOR_plus2 ((functor_t)(146*4+2)) -#define FUNCTOR_popcount1 ((functor_t)(147*4+2)) -#define FUNCTOR_portray1 ((functor_t)(148*4+2)) -#define FUNCTOR_position1 ((functor_t)(149*4+2)) -#define FUNCTOR_powm3 ((functor_t)(150*4+2)) -#define FUNCTOR_print1 ((functor_t)(151*4+2)) -#define FUNCTOR_print_message2 ((functor_t)(152*4+2)) -#define FUNCTOR_procedure2 ((functor_t)(153*4+2)) -#define FUNCTOR_prove1 ((functor_t)(154*4+2)) -#define FUNCTOR_prove2 ((functor_t)(155*4+2)) -#define FUNCTOR_punct2 ((functor_t)(156*4+2)) -#define FUNCTOR_random1 ((functor_t)(157*4+2)) -#define FUNCTOR_rational1 ((functor_t)(158*4+2)) -#define FUNCTOR_rationalize1 ((functor_t)(159*4+2)) -#define FUNCTOR_rdiv2 ((functor_t)(160*4+2)) -#define FUNCTOR_rem2 ((functor_t)(161*4+2)) -#define FUNCTOR_reposition1 ((functor_t)(162*4+2)) -#define FUNCTOR_representation_error1 ((functor_t)(163*4+2)) -#define FUNCTOR_representation_errors1 ((functor_t)(164*4+2)) -#define FUNCTOR_resource_error1 ((functor_t)(165*4+2)) -#define FUNCTOR_retry1 ((functor_t)(166*4+2)) -#define FUNCTOR_round1 ((functor_t)(167*4+2)) -#define FUNCTOR_rshift2 ((functor_t)(168*4+2)) -#define FUNCTOR_semicolon2 ((functor_t)(169*4+2)) -#define FUNCTOR_setup_call_catcher_cleanup4 ((functor_t)(170*4+2)) -#define FUNCTOR_shared_object2 ((functor_t)(171*4+2)) -#define FUNCTOR_shell2 ((functor_t)(172*4+2)) -#define FUNCTOR_sign1 ((functor_t)(173*4+2)) -#define FUNCTOR_signal1 ((functor_t)(174*4+2)) -#define FUNCTOR_signal2 ((functor_t)(175*4+2)) -#define FUNCTOR_sin1 ((functor_t)(176*4+2)) -#define FUNCTOR_singletons1 ((functor_t)(177*4+2)) -#define FUNCTOR_size1 ((functor_t)(178*4+2)) -#define FUNCTOR_smaller2 ((functor_t)(179*4+2)) -#define FUNCTOR_smaller_equal2 ((functor_t)(180*4+2)) -#define FUNCTOR_softcut2 ((functor_t)(181*4+2)) -#define FUNCTOR_spy1 ((functor_t)(182*4+2)) -#define FUNCTOR_sqrt1 ((functor_t)(183*4+2)) -#define FUNCTOR_star2 ((functor_t)(184*4+2)) -#define FUNCTOR_status1 ((functor_t)(185*4+2)) -#define FUNCTOR_stream4 ((functor_t)(186*4+2)) -#define FUNCTOR_stream_position4 ((functor_t)(187*4+2)) -#define FUNCTOR_strict_equal2 ((functor_t)(188*4+2)) -#define FUNCTOR_string1 ((functor_t)(189*4+2)) -#define FUNCTOR_string2 ((functor_t)(190*4+2)) -#define FUNCTOR_string_position2 ((functor_t)(191*4+2)) -#define FUNCTOR_syntax_error1 ((functor_t)(192*4+2)) -#define FUNCTOR_syntax_error3 ((functor_t)(193*4+2)) -#define FUNCTOR_tan1 ((functor_t)(194*4+2)) -#define FUNCTOR_term_expansion2 ((functor_t)(195*4+2)) -#define FUNCTOR_term_position5 ((functor_t)(196*4+2)) -#define FUNCTOR_timeout1 ((functor_t)(197*4+2)) -#define FUNCTOR_timeout_error2 ((functor_t)(198*4+2)) -#define FUNCTOR_trace1 ((functor_t)(199*4+2)) -#define FUNCTOR_traceinterc3 ((functor_t)(200*4+2)) -#define FUNCTOR_tracing1 ((functor_t)(201*4+2)) -#define FUNCTOR_true0 ((functor_t)(202*4+2)) -#define FUNCTOR_truncate1 ((functor_t)(203*4+2)) -#define FUNCTOR_tty1 ((functor_t)(204*4+2)) -#define FUNCTOR_type1 ((functor_t)(205*4+2)) -#define FUNCTOR_type_error2 ((functor_t)(206*4+2)) -#define FUNCTOR_undefinterc4 ((functor_t)(207*4+2)) -#define FUNCTOR_unify_determined2 ((functor_t)(208*4+2)) -#define FUNCTOR_uninstantiation_error1 ((functor_t)(209*4+2)) -#define FUNCTOR_var1 ((functor_t)(210*4+2)) -#define FUNCTOR_wakeup3 ((functor_t)(211*4+2)) -#define FUNCTOR_warning3 ((functor_t)(212*4+2)) -#define FUNCTOR_xor2 ((functor_t)(213*4+2)) -#define FUNCTOR_xpceref1 ((functor_t)(214*4+2)) +#define FUNCTOR_acosh1 ((functor_t)(3*4+2)) +#define FUNCTOR_alias1 ((functor_t)(4*4+2)) +#define FUNCTOR_and2 ((functor_t)(5*4+2)) +#define FUNCTOR_ar_equals2 ((functor_t)(6*4+2)) +#define FUNCTOR_ar_not_equal2 ((functor_t)(7*4+2)) +#define FUNCTOR_asin1 ((functor_t)(8*4+2)) +#define FUNCTOR_asinh1 ((functor_t)(9*4+2)) +#define FUNCTOR_assert1 ((functor_t)(10*4+2)) +#define FUNCTOR_asserta1 ((functor_t)(11*4+2)) +#define FUNCTOR_atan1 ((functor_t)(12*4+2)) +#define FUNCTOR_atan2 ((functor_t)(13*4+2)) +#define FUNCTOR_atanh1 ((functor_t)(14*4+2)) +#define FUNCTOR_atan22 ((functor_t)(15*4+2)) +#define FUNCTOR_atom1 ((functor_t)(16*4+2)) +#define FUNCTOR_att3 ((functor_t)(17*4+2)) +#define FUNCTOR_backslash1 ((functor_t)(18*4+2)) +#define FUNCTOR_bar2 ((functor_t)(19*4+2)) +#define FUNCTOR_bitor2 ((functor_t)(20*4+2)) +#define FUNCTOR_bom1 ((functor_t)(21*4+2)) +#define FUNCTOR_brace_term_position3 ((functor_t)(22*4+2)) +#define FUNCTOR_break1 ((functor_t)(23*4+2)) +#define FUNCTOR_break2 ((functor_t)(24*4+2)) +#define FUNCTOR_break3 ((functor_t)(25*4+2)) +#define FUNCTOR_buffer1 ((functor_t)(26*4+2)) +#define FUNCTOR_buffer_size1 ((functor_t)(27*4+2)) +#define FUNCTOR_busy2 ((functor_t)(28*4+2)) +#define FUNCTOR_call1 ((functor_t)(29*4+2)) +#define FUNCTOR_callpred2 ((functor_t)(30*4+2)) +#define FUNCTOR_catch3 ((functor_t)(31*4+2)) +#define FUNCTOR_ceil1 ((functor_t)(32*4+2)) +#define FUNCTOR_ceiling1 ((functor_t)(33*4+2)) +#define FUNCTOR_chars1 ((functor_t)(34*4+2)) +#define FUNCTOR_chars2 ((functor_t)(35*4+2)) +#define FUNCTOR_class1 ((functor_t)(36*4+2)) +#define FUNCTOR_clause1 ((functor_t)(37*4+2)) +#define FUNCTOR_close_on_abort1 ((functor_t)(38*4+2)) +#define FUNCTOR_close_on_exec1 ((functor_t)(39*4+2)) +#define FUNCTOR_codes1 ((functor_t)(40*4+2)) +#define FUNCTOR_codes2 ((functor_t)(41*4+2)) +#define FUNCTOR_colon2 ((functor_t)(42*4+2)) +#define FUNCTOR_comma2 ((functor_t)(43*4+2)) +#define FUNCTOR_context2 ((functor_t)(44*4+2)) +#define FUNCTOR_copysign2 ((functor_t)(45*4+2)) +#define FUNCTOR_cos1 ((functor_t)(46*4+2)) +#define FUNCTOR_cosh1 ((functor_t)(47*4+2)) +#define FUNCTOR_cputime0 ((functor_t)(48*4+2)) +#define FUNCTOR_curl1 ((functor_t)(49*4+2)) +#define FUNCTOR_cut_call1 ((functor_t)(50*4+2)) +#define FUNCTOR_cut_exit1 ((functor_t)(51*4+2)) +#define FUNCTOR_dand2 ((functor_t)(52*4+2)) +#define FUNCTOR_date3 ((functor_t)(53*4+2)) +#define FUNCTOR_date9 ((functor_t)(54*4+2)) +#define FUNCTOR_dc_call_prolog0 ((functor_t)(55*4+2)) +#define FUNCTOR_dcall1 ((functor_t)(56*4+2)) +#define FUNCTOR_dcut1 ((functor_t)(57*4+2)) +#define FUNCTOR_dde_error2 ((functor_t)(58*4+2)) +#define FUNCTOR_debugging1 ((functor_t)(59*4+2)) +#define FUNCTOR_detached1 ((functor_t)(60*4+2)) +#define FUNCTOR_dexit2 ((functor_t)(61*4+2)) +#define FUNCTOR_dforeign_registered2 ((functor_t)(62*4+2)) +#define FUNCTOR_dgarbage_collect1 ((functor_t)(63*4+2)) +#define FUNCTOR_div2 ((functor_t)(64*4+2)) +#define FUNCTOR_gdiv2 ((functor_t)(65*4+2)) +#define FUNCTOR_divide2 ((functor_t)(66*4+2)) +#define FUNCTOR_dmessage_queue1 ((functor_t)(67*4+2)) +#define FUNCTOR_dmutex1 ((functor_t)(68*4+2)) +#define FUNCTOR_domain_error2 ((functor_t)(69*4+2)) +#define FUNCTOR_dot2 ((functor_t)(70*4+2)) +#define FUNCTOR_doublestar2 ((functor_t)(71*4+2)) +#define FUNCTOR_dprof_node1 ((functor_t)(72*4+2)) +#define FUNCTOR_drecover_and_rethrow2 ((functor_t)(73*4+2)) +#define FUNCTOR_dstream1 ((functor_t)(74*4+2)) +#define FUNCTOR_dthread_init0 ((functor_t)(75*4+2)) +#define FUNCTOR_dthrow1 ((functor_t)(76*4+2)) +#define FUNCTOR_dtime2 ((functor_t)(77*4+2)) +#define FUNCTOR_dvard1 ((functor_t)(78*4+2)) +#define FUNCTOR_dwakeup1 ((functor_t)(79*4+2)) +#define FUNCTOR_e0 ((functor_t)(80*4+2)) +#define FUNCTOR_encoding1 ((functor_t)(81*4+2)) +#define FUNCTOR_end_of_stream1 ((functor_t)(82*4+2)) +#define FUNCTOR_eof_action1 ((functor_t)(83*4+2)) +#define FUNCTOR_epsilon0 ((functor_t)(84*4+2)) +#define FUNCTOR_equals2 ((functor_t)(85*4+2)) +#define FUNCTOR_erased1 ((functor_t)(86*4+2)) +#define FUNCTOR_error2 ((functor_t)(87*4+2)) +#define FUNCTOR_eval1 ((functor_t)(88*4+2)) +#define FUNCTOR_evaluation_error1 ((functor_t)(89*4+2)) +#define FUNCTOR_exception1 ((functor_t)(90*4+2)) +#define FUNCTOR_exception3 ((functor_t)(91*4+2)) +#define FUNCTOR_existence_error2 ((functor_t)(92*4+2)) +#define FUNCTOR_exited1 ((functor_t)(93*4+2)) +#define FUNCTOR_exp1 ((functor_t)(94*4+2)) +#define FUNCTOR_exports1 ((functor_t)(95*4+2)) +#define FUNCTOR_external_exception1 ((functor_t)(96*4+2)) +#define FUNCTOR_fail0 ((functor_t)(97*4+2)) +#define FUNCTOR_failure_error1 ((functor_t)(98*4+2)) +#define FUNCTOR_file1 ((functor_t)(99*4+2)) +#define FUNCTOR_file4 ((functor_t)(100*4+2)) +#define FUNCTOR_file_name1 ((functor_t)(101*4+2)) +#define FUNCTOR_file_no1 ((functor_t)(102*4+2)) +#define FUNCTOR_float1 ((functor_t)(103*4+2)) +#define FUNCTOR_float_fractional_part1 ((functor_t)(104*4+2)) +#define FUNCTOR_float_integer_part1 ((functor_t)(105*4+2)) +#define FUNCTOR_floor1 ((functor_t)(106*4+2)) +#define FUNCTOR_foreign_function1 ((functor_t)(107*4+2)) +#define FUNCTOR_frame3 ((functor_t)(108*4+2)) +#define FUNCTOR_frame_finished1 ((functor_t)(109*4+2)) +#define FUNCTOR_gcd2 ((functor_t)(110*4+2)) +#define FUNCTOR_goal_expansion2 ((functor_t)(111*4+2)) +#define FUNCTOR_ground1 ((functor_t)(112*4+2)) +#define FUNCTOR_hat2 ((functor_t)(113*4+2)) +#define FUNCTOR_ifthen2 ((functor_t)(114*4+2)) +#define FUNCTOR_import_into1 ((functor_t)(115*4+2)) +#define FUNCTOR_input0 ((functor_t)(116*4+2)) +#define FUNCTOR_input3 ((functor_t)(117*4+2)) +#define FUNCTOR_integer1 ((functor_t)(118*4+2)) +#define FUNCTOR_interrupt1 ((functor_t)(119*4+2)) +#define FUNCTOR_io_error2 ((functor_t)(120*4+2)) +#define FUNCTOR_is2 ((functor_t)(121*4+2)) +#define FUNCTOR_isovar1 ((functor_t)(122*4+2)) +#define FUNCTOR_larger2 ((functor_t)(123*4+2)) +#define FUNCTOR_larger_equal2 ((functor_t)(124*4+2)) +#define FUNCTOR_line_count1 ((functor_t)(125*4+2)) +#define FUNCTOR_list_position4 ((functor_t)(126*4+2)) +#define FUNCTOR_listing1 ((functor_t)(127*4+2)) +#define FUNCTOR_locked2 ((functor_t)(128*4+2)) +#define FUNCTOR_log1 ((functor_t)(129*4+2)) +#define FUNCTOR_log101 ((functor_t)(130*4+2)) +#define FUNCTOR_lsb1 ((functor_t)(131*4+2)) +#define FUNCTOR_lshift2 ((functor_t)(132*4+2)) +#define FUNCTOR_max2 ((functor_t)(133*4+2)) +#define FUNCTOR_max_size1 ((functor_t)(134*4+2)) +#define FUNCTOR_message_lines1 ((functor_t)(135*4+2)) +#define FUNCTOR_min2 ((functor_t)(136*4+2)) +#define FUNCTOR_minus1 ((functor_t)(137*4+2)) +#define FUNCTOR_minus2 ((functor_t)(138*4+2)) +#define FUNCTOR_mod2 ((functor_t)(139*4+2)) +#define FUNCTOR_mode1 ((functor_t)(140*4+2)) +#define FUNCTOR_msb1 ((functor_t)(141*4+2)) +#define FUNCTOR_newline1 ((functor_t)(142*4+2)) +#define FUNCTOR_nlink1 ((functor_t)(143*4+2)) +#define FUNCTOR_nonvar1 ((functor_t)(144*4+2)) +#define FUNCTOR_not_implemented2 ((functor_t)(145*4+2)) +#define FUNCTOR_not_provable1 ((functor_t)(146*4+2)) +#define FUNCTOR_not_strict_equal2 ((functor_t)(147*4+2)) +#define FUNCTOR_occurs_check2 ((functor_t)(148*4+2)) +#define FUNCTOR_or1 ((functor_t)(149*4+2)) +#define FUNCTOR_output0 ((functor_t)(150*4+2)) +#define FUNCTOR_permission_error3 ((functor_t)(151*4+2)) +#define FUNCTOR_pi0 ((functor_t)(152*4+2)) +#define FUNCTOR_pipe1 ((functor_t)(153*4+2)) +#define FUNCTOR_plus1 ((functor_t)(154*4+2)) +#define FUNCTOR_plus2 ((functor_t)(155*4+2)) +#define FUNCTOR_popcount1 ((functor_t)(156*4+2)) +#define FUNCTOR_portray1 ((functor_t)(157*4+2)) +#define FUNCTOR_position1 ((functor_t)(158*4+2)) +#define FUNCTOR_powm3 ((functor_t)(159*4+2)) +#define FUNCTOR_print1 ((functor_t)(160*4+2)) +#define FUNCTOR_print_message2 ((functor_t)(161*4+2)) +#define FUNCTOR_priority1 ((functor_t)(162*4+2)) +#define FUNCTOR_procedure2 ((functor_t)(163*4+2)) +#define FUNCTOR_prove1 ((functor_t)(164*4+2)) +#define FUNCTOR_prove2 ((functor_t)(165*4+2)) +#define FUNCTOR_punct2 ((functor_t)(166*4+2)) +#define FUNCTOR_random1 ((functor_t)(167*4+2)) +#define FUNCTOR_random_float0 ((functor_t)(168*4+2)) +#define FUNCTOR_rational1 ((functor_t)(169*4+2)) +#define FUNCTOR_rationalize1 ((functor_t)(170*4+2)) +#define FUNCTOR_rdiv2 ((functor_t)(171*4+2)) +#define FUNCTOR_redo1 ((functor_t)(172*4+2)) +#define FUNCTOR_rem2 ((functor_t)(173*4+2)) +#define FUNCTOR_reposition1 ((functor_t)(174*4+2)) +#define FUNCTOR_representation_error1 ((functor_t)(175*4+2)) +#define FUNCTOR_representation_errors1 ((functor_t)(176*4+2)) +#define FUNCTOR_resource_error1 ((functor_t)(177*4+2)) +#define FUNCTOR_retry1 ((functor_t)(178*4+2)) +#define FUNCTOR_round1 ((functor_t)(179*4+2)) +#define FUNCTOR_rshift2 ((functor_t)(180*4+2)) +#define FUNCTOR_semicolon2 ((functor_t)(181*4+2)) +#define FUNCTOR_setup_call_catcher_cleanup4 ((functor_t)(182*4+2)) +#define FUNCTOR_shared_object2 ((functor_t)(183*4+2)) +#define FUNCTOR_shell2 ((functor_t)(184*4+2)) +#define FUNCTOR_sign1 ((functor_t)(185*4+2)) +#define FUNCTOR_signal1 ((functor_t)(186*4+2)) +#define FUNCTOR_signal2 ((functor_t)(187*4+2)) +#define FUNCTOR_sin1 ((functor_t)(188*4+2)) +#define FUNCTOR_singletons1 ((functor_t)(189*4+2)) +#define FUNCTOR_sinh1 ((functor_t)(190*4+2)) +#define FUNCTOR_size1 ((functor_t)(191*4+2)) +#define FUNCTOR_smaller2 ((functor_t)(192*4+2)) +#define FUNCTOR_smaller_equal2 ((functor_t)(193*4+2)) +#define FUNCTOR_softcut2 ((functor_t)(194*4+2)) +#define FUNCTOR_spy1 ((functor_t)(195*4+2)) +#define FUNCTOR_sqrt1 ((functor_t)(196*4+2)) +#define FUNCTOR_star2 ((functor_t)(197*4+2)) +#define FUNCTOR_status1 ((functor_t)(198*4+2)) +#define FUNCTOR_stream4 ((functor_t)(199*4+2)) +#define FUNCTOR_stream_position4 ((functor_t)(200*4+2)) +#define FUNCTOR_strict_equal2 ((functor_t)(201*4+2)) +#define FUNCTOR_string1 ((functor_t)(202*4+2)) +#define FUNCTOR_string2 ((functor_t)(203*4+2)) +#define FUNCTOR_string_position2 ((functor_t)(204*4+2)) +#define FUNCTOR_syntax_error1 ((functor_t)(205*4+2)) +#define FUNCTOR_syntax_error3 ((functor_t)(206*4+2)) +#define FUNCTOR_tan1 ((functor_t)(207*4+2)) +#define FUNCTOR_tanh1 ((functor_t)(208*4+2)) +#define FUNCTOR_term_expansion2 ((functor_t)(209*4+2)) +#define FUNCTOR_term_position5 ((functor_t)(210*4+2)) +#define FUNCTOR_timeout1 ((functor_t)(211*4+2)) +#define FUNCTOR_timeout_error2 ((functor_t)(212*4+2)) +#define FUNCTOR_trace1 ((functor_t)(213*4+2)) +#define FUNCTOR_traceinterc3 ((functor_t)(214*4+2)) +#define FUNCTOR_tracing1 ((functor_t)(215*4+2)) +#define FUNCTOR_true0 ((functor_t)(216*4+2)) +#define FUNCTOR_truncate1 ((functor_t)(217*4+2)) +#define FUNCTOR_tty1 ((functor_t)(218*4+2)) +#define FUNCTOR_type1 ((functor_t)(219*4+2)) +#define FUNCTOR_type_error2 ((functor_t)(220*4+2)) +#define FUNCTOR_undefinterc4 ((functor_t)(221*4+2)) +#define FUNCTOR_unify_determined2 ((functor_t)(222*4+2)) +#define FUNCTOR_uninstantiation_error1 ((functor_t)(223*4+2)) +#define FUNCTOR_var1 ((functor_t)(224*4+2)) +#define FUNCTOR_wakeup3 ((functor_t)(225*4+2)) +#define FUNCTOR_warning3 ((functor_t)(226*4+2)) +#define FUNCTOR_xor2 ((functor_t)(227*4+2)) +#define FUNCTOR_xpceref1 ((functor_t)(228*4+2)) +#define FUNCTOR_xpceref2 ((functor_t)(229*4+2)) -#define N_SWI_ATOMS 649 -#define N_SWI_FUNCTORS 215 +#define N_SWI_ATOMS 691 +#define N_SWI_FUNCTORS 230 #define N_SWI_HASH_BITS 11 #define N_SWI_HASH 2048 diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index 9dff83308..572cf20ab 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -2784,6 +2784,11 @@ PL_query(int query) } } +X_API void +PL_cleanup_fork(void) +{ +} + X_API void (*PL_signal(int sig, void (*func)(int)))(int) { diff --git a/misc/SWIATOMS b/misc/SWIATOMS index 247e30f16..744d613e1 100644 --- a/misc/SWIATOMS +++ b/misc/SWIATOMS @@ -14,7 +14,9 @@ A abort "abort" A aborted "$aborted" A abs "abs" A access "access" +A access_level "access_level" A acos "acos" +A acosh "acosh" A acyclic_term "acyclic_term" A add_import "add_import" A address "address" @@ -38,6 +40,7 @@ A argumentlimit "argumentlimit" A as "as" A ascii "ascii" A asin "asin" +A asinh "asinh" A assert "assert" A asserta "asserta" A at "at" @@ -49,6 +52,7 @@ A at_not_equals "\\=@=" A at_smaller "@<" A at_smaller_eq "@=<" A atan "atan" +A atanh "atanh" A atan2 "atan2" A atom "atom" A atom_garbage_collection "atom_garbage_collection" @@ -62,8 +66,10 @@ A backquoted_string "backquoted_string" A backslash "\\" A backtrace "backtrace" A bar "|" +A base "base" A begin "begin" A binary "binary" +A binary_stream "binary_stream" A bind "bind" A bitor "\\/" A blobs "blobs" @@ -73,6 +79,7 @@ A bool "bool" A boolean "boolean" A brace_term_position "brace_term_position" A break "break" +A break_level "break_level" A btree "btree" A buffer "buffer" A buffer_size "buffer_size" @@ -86,6 +93,7 @@ A callpred "$callpred" A canceled "canceled" A case_sensitive_file_names "case_sensitive_file_names" A catch "catch" +A category "category" A ceil "ceil" A ceiling "ceiling" A char_type "char_type" @@ -96,11 +104,13 @@ A chars "chars" A chdir "chdir" A chmod "chmod" A choice "choice" +A class "class" A clause "clause" +A clauses "clauses" A clause_reference "clause_reference" A close "close" A close_on_abort "close_on_abort" -A close_on_exec "close_on_exec" +A close_on_exec "close_on_exec" A close_option "close_option" A cm "cm" A cntrl "cntrl" @@ -115,9 +125,11 @@ A compound "compound" A context "context" A context_module "context_module" A continue "continue" +A copysign "copysign" A core "core" A core_left "core_left" A cos "cos" +A cosh "cosh" A cputime "cputime" A create "create" A csym "csym" @@ -133,6 +145,7 @@ A cut_exit "cut_exit" A cut_parent "cut_parent" A cutted "cut" A cyclic_term "cyclic_term" +A cycles "cycles" A dand "$and" A date "date" A db_reference "db_reference" @@ -143,8 +156,10 @@ A dcatch "$catch" A dcut "$cut" A dde_error "dde_error" A dde_handle "dde_handle" +A deadline "deadline" A debug "debug" A debug_on_error "debug_on_error" +A debug_topic "debug_topic" A debugger_print_options "debugger_print_options" A debugger_show_context "debugger_show_context" A debugging "debugging" @@ -176,11 +191,13 @@ A dots "dots" A double_quotes "double_quotes" A doublestar "**" A dprof_node "$profile_node" +A dquery_loop "$query_loop" A drecover_and_rethrow "$recover_and_rethrow" A dstream "$stream" A dthread_init "$thread_init" A dthrow "$throw" A dtime "$time" +A dtoplevel "$toplevel" A dvard "$VAR$" A dwakeup "$wakeup" A dynamic "dynamic" @@ -274,9 +291,8 @@ A has_alternatives "has_alternatives" A hash "hash" A hashed "hashed" A hat "^" -A heap "heap" -A heaplimit "heaplimit" A heapused "heapused" +A heap_gc "heap_gc" A help "help" A hidden "hidden" A hide_childs "hide_childs" @@ -284,6 +300,8 @@ A history_depth "history_depth" A ifthen "->" A ignore "ignore" A ignore_ops "ignore_ops" +A import_into "import_into" +A import_type "import_type" A imported "imported" A imported_procedure "imported_procedure" A index "index" @@ -292,7 +310,7 @@ A inf "inf" A inferences "inferences" A infinite "infinite" A informational "informational" -A init_file "init_file" +A init_file "init_file" A initialization "initialization" A input "input" A inserted_char "inserted_char" @@ -318,9 +336,11 @@ A larger ">" A larger_equal ">=" A level "level" A li "li" +A library "library" A limit "limit" A line "line" A line_count "line_count" +A line_position "line_position" A list "list" A list_position "list_position" A listing "listing" @@ -335,6 +355,7 @@ A locked "locked" A log "log" A log10 "log10" A long "long" +A loose "loose" A low "low" A lower "lower" A lsb "lsb" @@ -348,6 +369,7 @@ A max_dde_handles "max_dde_handles" A max_depth "max_depth" A max_files "max_files" A max_frame_size "max_frame_size" +A max_length "max_length" A max_path_length "max_path_length" A max_size "max_size" A max_variable_length "max_variable_length" @@ -367,6 +389,7 @@ A mod "mod" A mode "mode" A modify "modify" A module "module" +A module_class "module_class" A module_property "module_property" A module_transparent "module_transparent" A modules "modules" @@ -393,15 +416,16 @@ A not_implemented "not_implemented" A not_less_than_one "not_less_than_one" A not_less_than_zero "not_less_than_zero" A not_provable "\\+" -A not_strickt_equals "\\==" +A not_strict_equal "\\==" A not_unique "not_unique" A number "number" A number_of_clauses "number_of_clauses" +A number_of_rules "number_of_rules" A numbervar_option "numbervar_option" A numbervars "numbervars" A occurs_check "occurs_check" A octet "octet" -A off "off" +A off "off" A on "on" A open "open" A operator "operator" @@ -411,6 +435,7 @@ A optimise "optimise" A or "or" A order "order" A output "output" +A owner "owner" A pair "pair" A paren "paren" A parent "parent" @@ -429,6 +454,7 @@ A plain "plain" A plus "+" A popcount "popcount" A portray "portray" +A portray_goal "portray_goal" A position "position" A posix "posix" A powm "powm" @@ -439,6 +465,8 @@ A print_message "print_message" A priority "priority" A private_procedure "private_procedure" A procedure "procedure" +A process_comment "process_comment" +A process_cputime "process_cputime" A profile_mode "profile_mode" A profile_no_cpu_time "profile_no_cpu_time" A profile_node "profile_node" @@ -463,6 +491,7 @@ A quote "quote" A quoted "quoted" A radix "radix" A random "random" +A random_float "random_float" A random_option "random_option" A rational "rational" A rationalize "rationalize" @@ -478,6 +507,7 @@ A record "record" A record_position "record_position" A redefine "redefine" A redo "redo" +A redo_in_skip "redo_in_skip" A references "references" A rem "rem" A rename "rename" @@ -495,6 +525,7 @@ A running "running" A runtime "runtime" A save_class "save_class" A save_option "save_option" +A see "see" A seed "seed" A seek_method "seek_method" A select "select" @@ -507,15 +538,18 @@ A shared "shared" A shared_object "shared_object" A shared_object_handle "shared_object_handle" A shell "shell" +A shift_time "shift_time" A sign "sign" A signal "signal" A signal_handler "signal_handler" A silent "silent" A sin "sin" A singletons "singletons" +A sinh "sinh" A size "size" A size_t "size_t" A skip "skip" +A skipped "skipped" A smaller "<" A smaller_equal "=<" A softcut "*->" @@ -534,6 +568,7 @@ A standard "standard" A star "*" A start "start" A stat "stat" +A state "state" A static_procedure "static_procedure" A statistics "statistics" A status "status" @@ -544,9 +579,11 @@ A stream_or_alias "stream_or_alias" A stream_pair "stream_pair" A stream_position "$stream_position" A stream_property "stream_property" +A stream_type_check "stream_type_check" A strict_equal "==" A string "string" A string_position "string_position" +A strong "strong" A subterm_positions "subterm_positions" A suffix "suffix" A syntax_error "syntax_error" @@ -554,18 +591,22 @@ A syntax_errors "syntax_errors" A system "system" A system_error "system_error" A system_init_file "system_init_file" -A system_thread_id "system_thread_id" +A system_thread_id "system_thread_id" A system_time "system_time" A tan "tan" +A tanh "tanh" A temporary_files "temporary_files" A term "term" A term_expansion "term_expansion" A term_position "term_position" A terminal "terminal" A terminal_capability "terminal_capability" +A test "test" A text "text" +A text_stream "text_stream" A thread "thread" A thread_cputime "thread_cputime" +A thread_get_message_option "thread_get_message_option" A thread_initialization "thread_initialization" A thread_local "thread_local" A thread_local_procedure "thread_local_procedure" @@ -583,7 +624,7 @@ A timezone "timezone" A to_lower "to_lower" A to_upper "to_upper" A top "top" -A top_level "top_level" +A top_level "top_level" A toplevel "toplevel" A trace "trace" A trace_any "trace_any" @@ -643,6 +684,7 @@ A wait "wait" A wakeup "wakeup" A walltime "walltime" A warning "warning" +A weak "weak" A wchar_t "wchar_t" A when_condition "when_condition" A white "white" @@ -663,15 +705,18 @@ A zero_divisor "zero_divisor" F abs 1 F access 1 F acos 1 +F acosh 1 F alias 1 F and 2 F ar_equals 2 F ar_not_equal 2 F asin 1 +F asinh 1 F assert 1 F asserta 1 F atan 1 F atan 2 +F atanh 1 F atan2 2 F atom 1 F att 3 @@ -693,15 +738,18 @@ F ceil 1 F ceiling 1 F chars 1 F chars 2 +F class 1 F clause 1 F close_on_abort 1 -F close_on_exec 1 +F close_on_exec 1 F codes 1 F codes 2 F colon 2 F comma 2 F context 2 +F copysign 2 F cos 1 +F cosh 1 F cputime 0 F curl 1 F cut_call 1 @@ -717,7 +765,7 @@ F debugging 1 F detached 1 F dexit 2 F dforeign_registered 2 -F dgarbage_collect 1 +F dgarbage_collect 1 F div 2 F gdiv 2 F divide 2 @@ -769,7 +817,9 @@ F goal_expansion 2 F ground 1 F hat 2 F ifthen 2 +F import_into 1 F input 0 +F input 3 F integer 1 F interrupt 1 F io_error 2 @@ -799,6 +849,7 @@ F nlink 1 F nonvar 1 F not_implemented 2 F not_provable 1 +F not_strict_equal 2 F occurs_check 2 F or 1 F output 0 @@ -813,14 +864,17 @@ F position 1 F powm 3 F print 1 F print_message 2 +F priority 1 F procedure 2 F prove 1 F prove 2 F punct 2 F random 1 +F random_float 0 F rational 1 F rationalize 1 F rdiv 2 +F redo 1 F rem 2 F reposition 1 F representation_error 1 @@ -838,6 +892,7 @@ F signal 1 F signal 2 F sin 1 F singletons 1 +F sinh 1 F size 1 F smaller 2 F smaller_equal 2 @@ -855,6 +910,7 @@ F string_position 2 F syntax_error 1 F syntax_error 3 F tan 1 +F tanh 1 F term_expansion 2 F term_position 5 F timeout 1 @@ -875,3 +931,4 @@ F wakeup 3 F warning 3 F xor 2 F xpceref 1 +F xpceref 2 diff --git a/os/SWI-Stream.h b/os/SWI-Stream.h index a0b7169b0..05f1edd26 100755 --- a/os/SWI-Stream.h +++ b/os/SWI-Stream.h @@ -163,6 +163,7 @@ typedef struct io_stream unsigned references : 4; /* Reference-count */ int io_errno; /* Save errno value */ void * exception; /* pending exception (record_t) */ + void * context; /* getStreamContext() */ intptr_t reserved[2]; /* reserved for extension */ } IOSTREAM; diff --git a/os/pl-file.c b/os/pl-file.c index 1509ed87d..85fb9d962 100755 --- a/os/pl-file.c +++ b/os/pl-file.c @@ -1,11 +1,10 @@ -/* $Id$ - - Part of SWI-Prolog +/* Part of SWI-Prolog Author: Jan Wielemaker - E-mail: wielemak@science.uva.nl + E-mail: J.Wielemaker@cs.vu.nl WWW: http://www.swi-prolog.org - Copyright (C): 1985-2008, University of Amsterdam + Copyright (C): 1985-2012, University of Amsterdam + VU University Amsterdam This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -19,7 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -36,6 +35,7 @@ handling times must be cleaned, but that not only holds for this module. /*#define O_DEBUG 1*/ /*#define O_DEBUG_MT 1*/ +#define NEEDS_SWINSOCK #include "pl-incl.h" #include "pl-ctype.h" #include "pl-utf8.h" @@ -143,11 +143,8 @@ typedef struct static stream_context * getStreamContext(IOSTREAM *s) -{ Symbol symb; - - if ( !(symb = lookupHTable(streamContext, s)) ) - { GET_LD - stream_context *ctx = allocHeap(sizeof(*ctx)); +{ if ( !s->context ) + { stream_context *ctx = allocHeapOrHalt(sizeof(*ctx)); DEBUG(1, Sdprintf("Created ctx=%p for stream %p\n", ctx, s)); @@ -155,18 +152,23 @@ getStreamContext(IOSTREAM *s) ctx->filename = NULL_ATOM; ctx->flags = 0; addHTable(streamContext, s, ctx); - - return ctx; + s->context = ctx; } - return symb->value; + return (stream_context*)s->context; +} + +static stream_context * +getExistingStreamContext(IOSTREAM *s) +{ return (stream_context*)s->context; } -void +/* MT: Must be called locked */ + +static void aliasStream(IOSTREAM *s, atom_t name) -{ GET_LD - stream_context *ctx; +{ stream_context *ctx; Symbol symb; alias *a; @@ -178,7 +180,7 @@ aliasStream(IOSTREAM *s, atom_t name) addHTable(streamAliases, (void *)name, s); PL_register_atom(name); - a = allocHeap(sizeof(*a)); + a = allocHeapOrHalt(sizeof(*a)); a->next = NULL; a->name = name; @@ -195,16 +197,16 @@ aliasStream(IOSTREAM *s, atom_t name) static void unaliasStream(IOSTREAM *s, atom_t name) -{ GET_LD - Symbol symb; +{ Symbol symb; if ( name ) { if ( (symb = lookupHTable(streamAliases, (void *)name)) ) - { deleteSymbolHTable(streamAliases, symb); + { stream_context *ctx; - if ( (symb=lookupHTable(streamContext, s)) ) - { stream_context *ctx = symb->value; - alias **a; + deleteSymbolHTable(streamAliases, symb); + + if ( (ctx=getExistingStreamContext(s)) ) + { alias **a; for(a = &ctx->alias_head; *a; a = &(*a)->next) { if ( (*a)->name == name ) @@ -223,9 +225,10 @@ unaliasStream(IOSTREAM *s, atom_t name) PL_unregister_atom(name); } } else /* delete them all */ - { if ( (symb=lookupHTable(streamContext, s)) ) - { stream_context *ctx = symb->value; - alias *a, *n; + { stream_context *ctx; + + if ( (ctx=getExistingStreamContext(s)) ) + { alias *a, *n; for(a = ctx->alias_head; a; a=n) { Symbol s2; @@ -302,7 +305,7 @@ setFileNameStream(IOSTREAM *s, atom_t name) { PL_unregister_atom(ctx->filename); ctx->filename = NULL_ATOM; } - if ( name != NULL_ATOM ) + if ( !(name == NULL_ATOM || name == ATOM_) ) ctx->filename = name; } @@ -332,12 +335,12 @@ initIO() streamContext = newHTable(16); PL_register_blob_type(&stream_blob); #ifdef __unix__ - { int fd; +{ int fd; - if ( (fd=Sfileno(Sinput)) < 0 || !isatty(fd) || - (fd=Sfileno(Soutput)) < 0 || !isatty(fd) ) - PL_set_prolog_flag("tty_control", PL_BOOL, FALSE); - } + if ( (fd=Sfileno(Sinput)) < 0 || !isatty(fd) || + (fd=Sfileno(Soutput)) < 0 || !isatty(fd) ) + PL_set_prolog_flag("tty_control", PL_BOOL, FALSE); +} #endif ResetTty(); #if __YAP_PROLOG__ @@ -382,7 +385,12 @@ initIO() static inline IOSTREAM * getStream(IOSTREAM *s) { if ( s && s->magic == SIO_MAGIC && Slock(s) == 0 ) + { if ( unlikely(s->magic == SIO_CMAGIC) ) + { Sunlock(s); + return NULL; + } return s; + } return NULL; } @@ -390,7 +398,12 @@ getStream(IOSTREAM *s) static inline IOSTREAM * tryGetStream(IOSTREAM *s) { if ( s && s->magic == SIO_MAGIC && StryLock(s) == 0 ) + { if ( unlikely(s->magic == SIO_CMAGIC) ) + { Sunlock(s); + return NULL; + } return s; + } return NULL; } @@ -423,9 +436,14 @@ PL_release_stream(IOSTREAM *s) * ERRORS * *******************************/ +static int symbol_no_stream(atom_t symbol); + static int -no_stream(term_t t) -{ return PL_error(NULL, 0, NULL, ERR_EXISTENCE, ATOM_stream, t); +no_stream(term_t t, atom_t name) +{ if ( t ) + return PL_error(NULL, 0, NULL, ERR_EXISTENCE, ATOM_stream, t); + else + return symbol_no_stream(name); } static int @@ -436,9 +454,13 @@ not_a_stream(term_t t) static int symbol_no_stream(atom_t symbol) { GET_LD - term_t t = PL_new_term_ref(); - PL_put_atom(t, symbol); - return no_stream(t); + term_t t; + + if ( (t = PL_new_term_ref()) ) + { PL_put_atom(t, symbol); + return no_stream(t, 0); + } else + return FALSE; } static int @@ -464,6 +486,7 @@ typedef struct stream_ref static int write_stream_ref(IOSTREAM *s, atom_t aref, int flags) { stream_ref *ref = PL_blob_data(aref, NULL, NULL); + (void)flags; if ( ref->read && ref->write ) Sfprintf(s, "(%p,%p)", ref->read, ref->write); @@ -507,6 +530,7 @@ release_stream_ref(atom_t aref) static int save_stream_ref(atom_t aref, IOSTREAM *fd) { stream_ref *ref = PL_blob_data(aref, NULL, NULL); + (void)fd; return PL_warning("Cannot save reference to (%p,%p)", ref->read, ref->write); @@ -515,7 +539,9 @@ save_stream_ref(atom_t aref, IOSTREAM *fd) static atom_t load_stream_ref(IOSTREAM *fd) -{ return PL_new_atom(""); +{ (void)fd; + + return PL_new_atom(""); } @@ -557,10 +583,9 @@ get_stream_handle__LD(atom_t a, IOSTREAM **sp, int flags ARG_LD) if ( s->erased ) goto noent; - assert(s->magic == SIO_MAGIC); - if ( flags & SH_UNLOCKED ) - { *sp = s; + { assert( s->magic == SIO_MAGIC || s->magic == SIO_CMAGIC ); + *sp = s; return TRUE; } else if ( (s=getStream(s)) ) { *sp = s; @@ -625,7 +650,7 @@ term_stream_handle(term_t t, IOSTREAM **s, int flags ARG_LD) if ( !PL_get_atom(t, &a) ) return not_a_stream(t); - return get_stream_handle(a, s, SH_ERRORS|SH_ALIAS); + return get_stream_handle(a, s, flags); } @@ -636,6 +661,7 @@ PL_get_stream_handle(term_t t, IOSTREAM **s) return term_stream_handle(t, s, SH_ERRORS|SH_ALIAS PASS_LD); } + static int unify_stream_ref(term_t t, IOSTREAM *s) { GET_LD @@ -682,10 +708,8 @@ PL_unify_stream_or_alias(term_t t, IOSTREAM *s) int PL_unify_stream(term_t t, IOSTREAM *s) -{ stream_context *ctx; - - LOCK(); - ctx = getStreamContext(s); +{ LOCK(); + (void)getStreamContext(s); /* get stream known to Prolog */ UNLOCK(); return unify_stream_ref(t, s); @@ -712,72 +736,144 @@ getOutputStream(term_t t, IOSTREAM **s) using releaseStream() or streamStatus(). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -int -getOutputStream(term_t t, IOSTREAM **stream) -{ GET_LD - atom_t a; +typedef enum +{ S_DONTCARE = 0, + S_TEXT, + S_BINARY +} s_type; + + +static int +checkStreamType(s_type text, IOSTREAM *s, atom_t *error ARG_LD) +{ if ( text == S_DONTCARE || LD->IO.stream_type_check == ST_FALSE ) + return TRUE; /* no checking */ + + /* ok? */ + if ( text == S_TEXT && (s->flags&SIO_TEXT) ) + return TRUE; + if ( text == S_BINARY && !(s->flags&SIO_TEXT) ) + return TRUE; + /* no */ + if ( LD->IO.stream_type_check == ST_LOOSE ) + { if ( text == S_TEXT ) + return TRUE; + if ( s->encoding == ENC_ISO_LATIN_1 || + s->encoding == ENC_OCTET ) + return TRUE; + } + + *error = (text == S_TEXT ? ATOM_binary_stream : ATOM_text_stream); + return FALSE; +} + + +static int +getOutputStream__LD(term_t t, s_type text, IOSTREAM **stream ARG_LD) +{ atom_t a; IOSTREAM *s; + atom_t tp; if ( t == 0 ) - { if ( (*stream = getStream(Scurout)) ) - return TRUE; - return no_stream(t); + { if ( (s = getStream(Scurout)) ) + goto ok; + return no_stream(t, ATOM_current_output); } if ( !PL_get_atom(t, &a) ) return not_a_stream(t); if ( a == ATOM_user ) - { if ( (*stream = getStream(Suser_output)) ) - return TRUE; - return no_stream(t); + { if ( (s = getStream(Suser_output)) ) + goto ok; + return no_stream(t, ATOM_user); } if ( !get_stream_handle(a, &s, SH_ERRORS|SH_ALIAS|SH_OUTPUT) ) return FALSE; +ok: if ( !(s->flags&SIO_OUTPUT) ) - { releaseStream(s); - return PL_error(NULL, 0, NULL, ERR_PERMISSION, - ATOM_output, ATOM_stream, t); + { tp = ATOM_stream; + } else if ( checkStreamType(text, s, &tp PASS_LD) ) + { *stream = s; + return TRUE; } - *stream = s; - return TRUE; + releaseStream(s); + if ( t == 0 ) + { if ( (t = PL_new_term_ref()) ) + PL_put_atom(t, ATOM_current_output); + else + return FALSE; /* resource error */ + } + return PL_error(NULL, 0, NULL, ERR_PERMISSION, + ATOM_output, tp, t); } int -getInputStream__LD(term_t t, IOSTREAM **stream ARG_LD) +getTextOutputStream__LD(term_t t, IOSTREAM **stream ARG_LD) +{ return getOutputStream(t, S_TEXT, stream); +} + + +int +getBinaryOutputStream__LD(term_t t, IOSTREAM **stream ARG_LD) +{ return getOutputStream(t, S_BINARY, stream); +} + + +static int +getInputStream__LD(term_t t, s_type text, IOSTREAM **stream ARG_LD) { atom_t a; IOSTREAM *s; + atom_t tp; if ( t == 0 ) - { if ( (*stream = getStream(Scurin)) ) - return TRUE; - return no_stream(t); + { if ( (s = getStream(Scurin)) ) + goto ok; + return no_stream(t, ATOM_current_input); } if ( !PL_get_atom(t, &a) ) return not_a_stream(t); if ( a == ATOM_user ) - { if ( (*stream = getStream(Suser_input)) ) - return TRUE; - return no_stream(t); + { if ( (s = getStream(Suser_input)) ) + goto ok; + return no_stream(t, ATOM_user); } if ( !get_stream_handle(a, &s, SH_ERRORS|SH_ALIAS|SH_INPUT) ) return FALSE; - if ( !(s->flags &SIO_INPUT) ) - { releaseStream(s); - return PL_error(NULL, 0, NULL, ERR_PERMISSION, - ATOM_input, ATOM_stream, t); +ok: + if ( !(s->flags&SIO_INPUT) ) + { tp = ATOM_stream; + } else if ( checkStreamType(text, s, &tp PASS_LD) ) + { *stream = s; + return TRUE; } - *stream = s; - return TRUE; + releaseStream(s); + if ( t == 0 ) + { if ( (t = PL_new_term_ref()) ) + PL_put_atom(t, ATOM_current_input); + else + return FALSE; /* resource error */ + } + return PL_error(NULL, 0, NULL, ERR_PERMISSION, + ATOM_input, tp, t); +} + +int +getTextInputStream__LD(term_t t, IOSTREAM **stream ARG_LD) +{ return getInputStream__LD(t, S_TEXT, stream PASS_LD); +} + +int +getBinaryInputStream__LD(term_t t, IOSTREAM **stream ARG_LD) +{ return getInputStream__LD(t, S_BINARY, stream PASS_LD); } @@ -807,8 +903,8 @@ PRED_IMPL("stream_pair", 3, stream_pair, 0) PL_unify_stream_or_alias(A3, ref->write) ); } - if ( getInputStream(A2, &in) && - getOutputStream(A3, &out) ) + if ( getInputStream(A2, S_DONTCARE, &in) && + getOutputStream(A3, S_DONTCARE, &out) ) { stream_ref ref; ref.read = in; @@ -839,7 +935,7 @@ static int isConsoleStream(IOSTREAM *s) { int i = standardStreamIndexFromStream(s); - return i >= 0 && i < 3; + return i >= 1 && i < 3; /* only output streams */ } #else #define isConsoleStream(s) FALSE @@ -889,7 +985,13 @@ reportStreamError(IOSTREAM *s) } else op = ATOM_read; } else - op = ATOM_write; + { if ( (s->flags & SIO_TIMEOUT) ) + { PL_error(NULL, 0, NULL, ERR_TIMEOUT, + ATOM_write, stream); + return FALSE; + } else + op = ATOM_write; + } if ( s->message ) { msg = s->message; @@ -922,8 +1024,9 @@ reportStreamError(IOSTREAM *s) int streamStatus(IOSTREAM *s) { if ( (s->flags & (SIO_FERR|SIO_WARN)) ) - { releaseStream(s); - return reportStreamError(s); + { int ret = reportStreamError(s); + releaseStream(s); + return ret; } releaseStream(s); @@ -943,6 +1046,7 @@ typedef struct output_context * OutputContext; struct input_context { IOSTREAM * stream; /* pushed input */ + atom_t type; /* Type of input */ atom_t term_file; /* old term_position file */ int term_line; /* old term_position line */ InputContext previous; /* previous context */ @@ -1032,23 +1136,6 @@ closeFiles(int all) } -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PL_cleanup_fork() must be called between fork() and exec() to remove -traces of Prolog that are not supposed to leak into the new process. -Note that we must be careful here. Notably, the code cannot lock or -unlock any mutex as the behaviour of mutexes is undefined over fork(). - -Earlier versions used the file-table to close file descriptors that are -in use by Prolog. This can't work as the table is guarded by a mutex. -Now we use the FD_CLOEXEC flag in Snew(); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -void -PL_cleanup_fork(void) -{ stopItimer(); -} - - void protocol(const char *str, size_t n) { GET_LD @@ -1067,13 +1154,15 @@ protocol(const char *str, size_t n) * TEMPORARY I/O * *******************************/ - -static int -push_input_context(void) +int +push_input_context(atom_t type) { GET_LD - InputContext c = allocHeap(sizeof(struct input_context)); + InputContext c = allocHeapOrHalt(sizeof(struct input_context)); + + PL_register_atom(type); c->stream = Scurin; + c->type = type; c->term_file = source_file_name; c->term_line = source_line_no; c->previous = input_context_stack; @@ -1083,7 +1172,7 @@ push_input_context(void) } -static int +int pop_input_context(void) { GET_LD InputContext c = input_context_stack; @@ -1093,6 +1182,7 @@ pop_input_context(void) source_file_name = c->term_file; source_line_no = c->term_line; input_context_stack = c->previous; + PL_unregister_atom(c->type); freeHeap(c, sizeof(struct input_context)); return TRUE; @@ -1104,8 +1194,14 @@ pop_input_context(void) static -PRED_IMPL("$push_input_context", 0, push_input_context, 0) -{ return push_input_context(); +PRED_IMPL("$push_input_context", 1, push_input_context, 0) +{ PRED_LD + atom_t type; + + if ( PL_get_atom_ex(A1, &type) ) + return push_input_context(type); + + return FALSE; } @@ -1115,10 +1211,39 @@ PRED_IMPL("$pop_input_context", 0, pop_input_context, 0) } +/** '$input_context'(-List) is det. + +True if List is a list of input(Type,File,Line) terms describing the +current input context. +*/ + +static +PRED_IMPL("$input_context", 1, input_context, 0) +{ PRED_LD + term_t tail = PL_copy_term_ref(A1); + term_t head = PL_new_term_ref(); + InputContext c = input_context_stack; + + for(c=input_context_stack; c; c=c->previous) + { atom_t file = c->term_file ? c->term_file : ATOM_minus; + int line = c->term_file ? c->term_line : 0; + + if ( !PL_unify_list(tail, head, tail) || + !PL_unify_term(head, PL_FUNCTOR, FUNCTOR_input3, + PL_ATOM, c->type, + PL_ATOM, file, + PL_INT, line) ) + return FALSE; + } + + return PL_unify_nil(tail); +} + + void pushOutputContext(void) { GET_LD - OutputContext c = allocHeap(sizeof(struct output_context)); + OutputContext c = allocHeapOrHalt(sizeof(struct output_context)); c->stream = Scurout; c->previous = output_context_stack; @@ -1155,12 +1280,12 @@ setupOutputRedirect(term_t to, redir_context *ctx, int redir) if ( to == 0 ) { if ( !(ctx->stream = getStream(Scurout)) ) - return no_stream(to); + return no_stream(to, ATOM_current_output); ctx->is_stream = TRUE; } else if ( PL_get_atom(to, &a) ) { if ( a == ATOM_user ) { if ( !(ctx->stream = getStream(Suser_output)) ) - return no_stream(to); + return no_stream(to, ATOM_user); ctx->is_stream = TRUE; } else if ( get_stream_handle(a, &ctx->stream, SH_OUTPUT|SH_ERRORS) ) { if ( !(ctx->stream->flags &SIO_OUTPUT) ) @@ -1255,6 +1380,12 @@ closeOutputRedirect(redir_context *ctx) } +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +discardOutputRedirect() is called if the `implementation' failed. One of +the reasons for failure can be that the implementation detected a +pending I/O stream error, in which case continuation is meaningless. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + void discardOutputRedirect(redir_context *ctx) { if ( ctx->magic != REDIR_MAGIC ) @@ -1266,7 +1397,7 @@ discardOutputRedirect(redir_context *ctx) popOutputContext(); if ( ctx->is_stream ) - { releaseStream(ctx->stream); + { streamStatus(ctx->stream); } else { closeStream(ctx->stream); if ( ctx->data != ctx->buffer ) @@ -1299,6 +1430,7 @@ void PL_write_prompt(int dowrite) { GET_LD IOSTREAM *s = getStream(Suser_output); + if ( s ) { if ( dowrite ) { atom_t a = PrologPrompt(); @@ -1351,7 +1483,7 @@ getSingleChar(IOSTREAM *stream, int signals) int c; ttybuf buf; - // debugstatus.suspendTrace++; VSC: to be replaced by macro + suspendTrace(TRUE); Slock(stream); Sflush(stream); PushTty(stream, &buf, TTY_RAW); /* just donot prompt */ @@ -1378,7 +1510,7 @@ getSingleChar(IOSTREAM *stream, int signals) c = -1; PopTty(stream, &buf, TRUE); - // debugstatus.suspendTrace--; VSC: to be replaced by macro + suspendTrace(FALSE); Sunlock(stream); return c; @@ -1638,9 +1770,20 @@ PRED_IMPL("set_stream", 2, set_stream, 0) if ( !PL_get_atom_ex(a, &type) ) return FALSE; if ( type == ATOM_text ) - { s->flags |= SIO_TEXT; + { if ( false(s, SIO_TEXT) && Ssetenc(s, LD->encoding, NULL) != 0 ) + { PL_error(NULL, 0, NULL, ERR_PERMISSION, + ATOM_encoding, ATOM_stream, stream); + goto error; + } + s->flags |= SIO_TEXT; } else if ( type == ATOM_binary ) - { s->flags &= ~SIO_TEXT; + { if ( true(s, SIO_TEXT) && Ssetenc(s, ENC_OCTET, NULL) != 0 ) + { PL_error(NULL, 0, NULL, ERR_PERMISSION, + ATOM_encoding, ATOM_stream, stream); + goto error; + } + + s->flags &= ~SIO_TEXT; } else { PL_error("set_stream", 2, NULL, ERR_DOMAIN, ATOM_type, a); @@ -1671,6 +1814,21 @@ PRED_IMPL("set_stream", 2, set_stream, 0) else s->position = NULL; + goto ok; + } else if ( aname == ATOM_line_position ) + { int lpos; + + if ( !PL_get_integer_ex(a, &lpos) ) + goto error; + + if ( s->position ) + { s->position->linepos = lpos; + } else + { PL_error(NULL, 0, NULL, ERR_PERMISSION, + ATOM_line_position, ATOM_stream, stream); + goto error; + } + goto ok; } else if ( aname == ATOM_file_name ) /* file_name(Atom) */ { atom_t fn; @@ -1817,7 +1975,7 @@ PRED_IMPL("set_end_of_stream", 1, set_end_of_stream, 0) A1); } else { rc = PL_error(NULL, 0, "not a file", ERR_PERMISSION, - ATOM_set_end_of_stream); + ATOM_set_end_of_stream, ATOM_stream, A1); } #else rc = notImplemented("set_end_of_stream", 1); @@ -1882,31 +2040,41 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) #else +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Windows<->Unix note. This function uses the Windows socket API for its +implementation and defines the Unix API in terms of the Windows API. +This approach allows full support of the restrictions of the Windows +implementation. Because the Unix emulation is more generic, this still +supports the generic facilities of Unix select() that make this +predicate work on pipes, serial devices, etc. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +#ifndef __WINDOWS__ +typedef int SOCKET; +#define INVALID_SOCKET -1 +#define Swinsock(s) Sfileno(s) +#define NFDS(max) (max+1) /* see also S__wait() */ +#else +#define NFDS(n) 0 +#endif + typedef struct fdentry -{ int fd; +{ SOCKET fd; term_t stream; struct fdentry *next; } fdentry; -static inline term_t -findmap(fdentry *map, int fd) -{ for( ; map; map = map->next ) - { if ( map->fd == fd ) - return map->stream; - } - assert(0); - return 0; -} - - static PRED_IMPL("wait_for_input", 3, wait_for_input, 0) { PRED_LD fd_set fds; struct timeval t, *to; double time; - int n, max = 0, ret, min = 1 << (INTBITSIZE-2); + int rc; +#ifndef __WINDOWS__ + SOCKET max = 0, min = INT_MAX; +#endif fdentry *map = NULL; term_t head = PL_new_term_ref(); term_t streams = PL_copy_term_ref(A1); @@ -1920,12 +2088,12 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) FD_ZERO(&fds); while( PL_get_list(streams, head, streams) ) { IOSTREAM *s; - int fd; + SOCKET fd; fdentry *e; if ( !PL_get_stream_handle(head, &s) ) return FALSE; - if ( (fd=Sfileno(s)) < 0 ) + if ( (fd=Swinsock(s)) < 0 ) { releaseStream(s); return PL_error("wait_for_input", 3, NULL, ERR_DOMAIN, PL_new_atom("file_stream"), head); @@ -1945,16 +2113,13 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) e->next = map; map = e; -#ifdef __WINDOWS__ - FD_SET((SOCKET)fd, &fds); -#else FD_SET(fd, &fds); -#endif - +#ifndef __WINDOWS__ if ( fd > max ) max = fd; if( fd < min ) min = fd; +#endif } if ( !PL_get_nil(streams) ) return PL_error("wait_for_input", 3, NULL, ERR_TYPE, ATOM_list, A1); @@ -1994,7 +2159,7 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) to = &t; } - while( (ret=select(max+1, &fds, NULL, NULL, to)) == -1 && + while( (rc=select(NFDS(max), &fds, NULL, NULL, to)) == -1 && errno == EINTR ) { fdentry *e; @@ -2003,16 +2168,10 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) FD_ZERO(&fds); /* EINTR may leave fds undefined */ for(e=map; e; e=e->next) /* so we rebuild it to be safe */ - { -#ifdef __WINDOWS__ - FD_SET((SOCKET)e->fd, &fds); -#else FD_SET(e->fd, &fds); -#endif - } } - switch(ret) + switch(rc) { case -1: return PL_error("wait_for_input", 3, MSG_ERRNO, ERR_FILE_OPERATION, ATOM_select, ATOM_stream, A1); @@ -2021,14 +2180,17 @@ PRED_IMPL("wait_for_input", 3, wait_for_input, 0) break; default: /* Something happend -> check fds */ - for(n=min; n <= max; n++) - { if ( FD_ISSET(n, &fds) ) + { fdentry *mp; + + for(mp=map; mp; mp=mp->next) + { if ( FD_ISSET(mp->fd, &fds) ) { if ( !PL_unify_list(available, ahead, available) || - !PL_unify(ahead, findmap(map, n)) ) + !PL_unify(ahead, mp->stream) ) return FALSE; } } break; + } } return PL_unify_nil(available); @@ -2117,7 +2279,7 @@ PRED_IMPL("read_pending_input", 3, read_pending_input, 0) { PRED_LD IOSTREAM *s; - if ( getInputStream(A1, &s) ) + if ( getInputStream(A1, S_DONTCARE, &s) ) { char buf[MAX_PENDING]; ssize_t n; int64_t off0 = Stell64(s); @@ -2197,7 +2359,7 @@ PRED_IMPL("read_pending_input", 3, read_pending_input, 0) us += mbrtowc(&c, us, es-us, s->mbstate); if ( c == '\r' && skip_cr(s) ) continue; - if ( s->position ) + if ( s->position ) S__fupdatefilepos_getc(s, c); addSmallIntList(&ctx, c); @@ -2214,13 +2376,25 @@ PRED_IMPL("read_pending_input", 3, read_pending_input, 0) size_t count = 0, i; while(us= 0 ) + { const char *ec = us + ex + 1; + + if ( ec <= es ) + { count++; + us=ec; + } else /* incomplete multi-byte */ + break; + } else + { Sseterr(s, SIO_WARN, "Illegal multibyte Sequence"); + goto failure; + } + } } DEBUG(2, Sdprintf("Got %ld codes from %d bytes; incomplete: %ld\n", @@ -2235,7 +2409,7 @@ PRED_IMPL("read_pending_input", 3, read_pending_input, 0) us = utf8_get_char(us, &c); if ( c == '\r' && skip_cr(s) ) continue; - if ( s->position ) + if ( s->position ) S__fupdatefilepos_getc(s, c); addSmallIntList(&ctx, c); @@ -2333,7 +2507,7 @@ put_byte(term_t stream, term_t byte ARG_LD) if ( !PL_get_integer(byte, &c) || c < 0 || c > 255 ) return PL_error(NULL, 0, NULL, ERR_TYPE, ATOM_byte, byte); - if ( !getOutputStream(stream, &s) ) + if ( !getBinaryOutputStream(stream, &s) ) return FALSE; Sputc(c, s); @@ -2365,7 +2539,7 @@ put_code(term_t stream, term_t chr ARG_LD) if ( !PL_get_char(chr, &c, FALSE) ) return FALSE; - if ( !getOutputStream(stream, &s) ) + if ( !getTextOutputStream(stream, &s) ) return FALSE; Sputcode(c, s); @@ -2410,7 +2584,7 @@ static foreign_t get_nonblank(term_t in, term_t chr ARG_LD) { IOSTREAM *s; - if ( getInputStream(in, &s) ) + if ( getTextInputStream(in, &s) ) { int c; for(;;) @@ -2456,7 +2630,7 @@ skip(term_t in, term_t chr ARG_LD) if ( !PL_get_char(chr, &c, FALSE) ) return FALSE; - if ( !getInputStream(in, &s) ) + if ( !getTextInputStream(in, &s) ) return FALSE; while((r=Sgetcode(s)) != c && r != EOF ) @@ -2512,7 +2686,7 @@ static foreign_t get_byte2(term_t in, term_t chr ARG_LD) { IOSTREAM *s; - if ( getInputStream(in, &s) ) + if ( getBinaryInputStream(in, &s) ) { int c = Sgetc(s); if ( PL_unify_integer(chr, c) ) @@ -2548,7 +2722,7 @@ static foreign_t get_code2(term_t in, term_t chr ARG_LD) { IOSTREAM *s; - if ( getInputStream(in, &s) ) + if ( getTextInputStream(in, &s) ) { int c = Sgetcode(s); if ( PL_unify_integer(chr, c) ) @@ -2583,7 +2757,7 @@ static foreign_t get_char2(term_t in, term_t chr ARG_LD) { IOSTREAM *s; - if ( getInputStream(in, &s) ) + if ( getTextInputStream(in, &s) ) { int c = Sgetcode(s); if ( PL_unify_atom(chr, c == -1 ? ATOM_end_of_file : codeToAtom(c)) ) @@ -2668,7 +2842,7 @@ PRED_IMPL("prompt", 2, prompt, 0) term_t new = A2; if ( PL_unify_atom(old, LD->prompt.current) && - PL_get_atom(new, &a) ) + PL_get_atom_ex(new, &a) ) { if ( LD->prompt.current ) PL_unregister_atom(LD->prompt.current); LD->prompt.current = a; @@ -2730,11 +2904,11 @@ PrologPrompt() static int -tab(term_t out, term_t spaces) +tab(term_t out, term_t spaces ARG_LD) { int64_t count; IOSTREAM *s; - if ( !getOutputStream(out, &s) ) + if ( !getTextOutputStream(out, &s) ) return FALSE; if ( !PL_eval_expression_to_int64_ex(spaces, &count) ) return FALSE; @@ -2750,12 +2924,16 @@ tab(term_t out, term_t spaces) static PRED_IMPL("tab", 2, tab2, 0) -{ return tab(A1, A2); +{ PRED_LD + + return tab(A1, A2 PASS_LD); } static PRED_IMPL("tab", 1, tab1, 0) -{ return tab(0, A1); +{ PRED_LD + + return tab(0, A1 PASS_LD); } @@ -2849,11 +3027,13 @@ static const opt_spec open4_options[] = { ATOM_lock, OPT_ATOM }, { ATOM_wait, OPT_BOOL }, { ATOM_encoding, OPT_ATOM }, - { ATOM_bom, OPT_BOOL }, + { ATOM_bom, OPT_BOOL }, { NULL_ATOM, 0 } }; +/* MT: openStream() must be called unlocked */ + IOSTREAM * openStream(term_t file, term_t mode, term_t options) { GET_LD @@ -2886,11 +3066,9 @@ openStream(term_t file, term_t mode, term_t options) { if ( mname == ATOM_write ) { *h++ = 'w'; } else if ( mname == ATOM_append ) - { bom = FALSE; - *h++ = 'a'; + { *h++ = 'a'; } else if ( mname == ATOM_update ) - { bom = FALSE; - *h++ = 'u'; + { *h++ = 'u'; } else if ( mname == ATOM_read ) { *h++ = 'r'; } else @@ -2994,19 +3172,34 @@ openStream(term_t file, term_t mode, term_t options) s->flags |= SIO_NOFEOF; else if ( eof_action == ATOM_error ) s->flags |= SIO_FEOF2ERR; + else + { term_t ex = PL_new_term_ref(); + PL_put_atom(ex, eof_action); + PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_eof_action, ex); + return NULL; + } } } else { if ( buffer != ATOM_full ) { s->flags &= ~SIO_FBUF; if ( buffer == ATOM_line ) s->flags |= SIO_LBUF; - if ( buffer == ATOM_false ) + else if ( buffer == ATOM_false ) s->flags |= SIO_NBUF; + else + { term_t ex = PL_new_term_ref(); + PL_put_atom(ex, buffer); + PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_buffer, ex); + return NULL; + } } } if ( alias != NULL_ATOM ) + { LOCK(); aliasStream(s, alias); + UNLOCK(); + } if ( !reposition ) s->position = NULL; @@ -3019,8 +3212,12 @@ openStream(term_t file, term_t mode, term_t options) return NULL; } } else - { if ( SwriteBOM(s) < 0 ) - goto bom_error; + { if ( mname == ATOM_write || + ( (mname == ATOM_append || mname == ATOM_update) && + Ssize(s) == 0 ) ) + { if ( SwriteBOM(s) < 0 ) + goto bom_error; + } } } @@ -3085,7 +3282,7 @@ pl_see(term_t f) if ( !PL_get_atom_ex(f, &a) ) return FALSE; - LOCK(); + PL_LOCK(L_SEETELL); if ( get_stream_handle(a, &s, SH_ALIAS|SH_UNLOCKED) ) { Scurin = s; goto ok; @@ -3102,16 +3299,16 @@ pl_see(term_t f) mode = PL_new_term_ref(); PL_put_atom(mode, ATOM_read); if ( !(s = openStream(f, mode, 0)) ) - { UNLOCK(); + { PL_UNLOCK(L_SEETELL); return FALSE; } set(getStreamContext(s), IO_SEE); - push_input_context(); + push_input_context(ATOM_see); Scurin = s; ok: - UNLOCK(); + PL_UNLOCK(L_SEETELL); return TRUE; } @@ -3168,7 +3365,7 @@ do_tell(term_t f, atom_t m) if ( !PL_get_atom_ex(f, &a) ) return FALSE; - LOCK(); + PL_LOCK(L_SEETELL); if ( get_stream_handle(a, &s, SH_UNLOCKED) ) { Scurout = s; goto ok; @@ -3185,7 +3382,7 @@ do_tell(term_t f, atom_t m) mode = PL_new_term_ref(); PL_put_atom(mode, m); if ( !(s = openStream(f, mode, 0)) ) - { UNLOCK(); + { PL_UNLOCK(L_SEETELL); return FALSE; } @@ -3194,7 +3391,7 @@ do_tell(term_t f, atom_t m) Scurout = s; ok: - UNLOCK(); + PL_UNLOCK(L_SEETELL); return TRUE; } @@ -3240,19 +3437,28 @@ PRED_IMPL("told", 0, told, 0) static ssize_t Swrite_null(void *handle, char *buf, size_t size) -{ return size; +{ (void)handle; + (void)buf; + + return size; } static ssize_t Sread_null(void *handle, char *buf, size_t size) -{ return 0; +{ (void)handle; + (void)buf; + (void)size; + + return 0; } static long Sseek_null(void *handle, long offset, int whence) -{ switch(whence) +{ (void)handle; + + switch(whence) { case SIO_SEEK_SET: return offset; case SIO_SEEK_CUR: @@ -3265,7 +3471,9 @@ Sseek_null(void *handle, long offset, int whence) static int Sclose_null(void *handle) -{ return 0; +{ (void)handle; + + return 0; } @@ -3279,7 +3487,7 @@ static const IOFUNCTIONS nullFunctions = static PRED_IMPL("open_null_stream", 1, open_null_stream, 0) -{ int sflags = SIO_NBUF|SIO_RECORDPOS|SIO_OUTPUT; +{ int sflags = SIO_NBUF|SIO_RECORDPOS|SIO_OUTPUT|SIO_TEXT; IOSTREAM *s = Snew((void *)NULL, sflags, (IOFUNCTIONS *)&nullFunctions); if ( s ) @@ -3962,10 +4170,10 @@ PRED_IMPL("is_stream", 1, is_stream, 0) static int -flush_output(term_t out) +flush_output(term_t out ARG_LD) { IOSTREAM *s; - if ( getOutputStream(out, &s) ) + if ( getOutputStream(out, S_DONTCARE, &s) ) { Sflush(s); return streamStatus(s); } @@ -3975,12 +4183,16 @@ flush_output(term_t out) static PRED_IMPL("flush_output", 0, flush_output, PL_FA_ISO) -{ return flush_output(0); +{ PRED_LD + + return flush_output(0 PASS_LD); } static PRED_IMPL("flush_output", 1, flush_output1, PL_FA_ISO) -{ return flush_output(A1); +{ PRED_LD + + return flush_output(A1 PASS_LD); } @@ -4132,7 +4344,7 @@ PRED_IMPL("set_input", 1, set_input, PL_FA_ISO) { PRED_LD IOSTREAM *s; - if ( getInputStream(A1, &s) ) + if ( getInputStream(A1, S_DONTCARE, &s) ) { Scurin = s; releaseStream(s); return TRUE; @@ -4147,7 +4359,7 @@ PRED_IMPL("set_output", 1, set_output, PL_FA_ISO) { PRED_LD IOSTREAM *s; - if ( getOutputStream(A1, &s) ) + if ( getOutputStream(A1, S_DONTCARE, &s) ) { Scurout = s; releaseStream(s); return TRUE; @@ -4249,7 +4461,7 @@ static int at_end_of_stream(term_t stream ARG_LD) { IOSTREAM *s; - if ( getInputStream(stream, &s) ) + if ( getInputStream(stream, S_DONTCARE, &s) ) { int rval = Sfeof(s); if ( rval < 0 ) @@ -4287,7 +4499,7 @@ peek(term_t stream, term_t chr, int how ARG_LD) { IOSTREAM *s; int c; - if ( !getInputStream(stream, &s) ) + if ( !getInputStream(stream, how == PL_BYTE ? S_BINARY : S_TEXT, &s) ) return FALSE; if ( true(s, SIO_NBUF) || (s->bufsize && s->bufsize < MB_LEN_MAX) ) { releaseStream(s); @@ -4517,9 +4729,9 @@ copy_stream_data(term_t in, term_t out, term_t len ARG_LD) int c; int count = 0; - if ( !getInputStream(in, &i) ) + if ( !getInputStream(in, S_DONTCARE, &i) ) return FALSE; - if ( !getOutputStream(out, &o) ) + if ( !getOutputStream(out, S_DONTCARE, &o) ) { releaseStream(i); return FALSE; } @@ -4665,6 +4877,7 @@ BeginPredDefs(file) /* SWI internal */ PRED_DEF("$push_input_context", 0, push_input_context, 0) PRED_DEF("$pop_input_context", 0, pop_input_context, 0) + PRED_DEF("$input_context", 1, input_context, 0) PRED_DEF("$size_stream", 2, size_stream, 0) //vsc EndPredDefs @@ -4673,7 +4886,8 @@ EndPredDefs void Yap_flush(void) { - flush_output(0); + GET_LD + flush_output(0 PASS_LD); } void * @@ -4784,7 +4998,6 @@ static const PL_extension foreigns[] = { struct PL_local_data *Yap_InitThreadIO(int wid) { - CACHE_REGS struct PL_local_data *p; if (wid) p = (struct PL_local_data *)malloc(sizeof(struct PL_local_data)); diff --git a/os/pl-file.h b/os/pl-file.h new file mode 100644 index 000000000..ffbe9bee4 --- /dev/null +++ b/os/pl-file.h @@ -0,0 +1,81 @@ +/* $Id$ + + Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@uva.nl + WWW: http://www.swi-prolog.org + Copyright (C): 1985-2011, University of Amsterdam + + This library 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 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef PL_FILE_H_INCLUDED +#define PL_FILE_H_INCLUDED + +typedef enum +{ ST_FALSE = -1, /* Do not check stream types */ + ST_LOOSE = 0, /* Default: accept latin-1 for binary */ + ST_TRUE = 1 /* Strict checking */ +} st_check; + +/* pl-file.c */ +COMMON(void) initIO(void); +COMMON(void) dieIO(void); +COMMON(void) closeFiles(int all); +COMMON(int) openFileDescriptors(unsigned char *buf, int size); +COMMON(void) protocol(const char *s, size_t n); +COMMON(int) getTextInputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getBinaryInputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getTextOutputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) getBinaryOutputStream__LD(term_t t, IOSTREAM **s ARG_LD); +COMMON(int) reportStreamError(IOSTREAM *s); +COMMON(int) streamStatus(IOSTREAM *s); +COMMON(atom_t) fileNameStream(IOSTREAM *s); +COMMON(int) getSingleChar(IOSTREAM *s, int signals); +COMMON(int) readLine(IOSTREAM *in, IOSTREAM *out, char *buffer); +COMMON(int) LockStream(void); +COMMON(int) UnlockStream(void); +COMMON(IOSTREAM *) PL_current_input(void); +COMMON(IOSTREAM *) PL_current_output(void); +COMMON(int) pl_see(term_t f); +COMMON(int) pl_seen(void); +COMMON(int) seeString(const char *s); +COMMON(int) seeingString(void); +COMMON(int) seenString(void); +COMMON(int) tellString(char **s, size_t *size, IOENC enc); +COMMON(int) toldString(void); +COMMON(void) prompt1(atom_t prompt); +COMMON(atom_t) PrologPrompt(void); +COMMON(int) streamNo(term_t spec, int mode); +COMMON(void) release_stream_handle(term_t spec); +COMMON(int) unifyTime(term_t t, time_t time); +#ifdef __WINDOWS__ +COMMON(word) pl_make_fat_filemap(term_t dir); +#endif +COMMON(int) PL_unify_stream_or_alias(term_t t, IOSTREAM *s); +COMMON(void) pushOutputContext(void); +COMMON(void) popOutputContext(void); +COMMON(IOENC) atom_to_encoding(atom_t a); +COMMON(atom_t) encoding_to_atom(IOENC enc); +COMMON(int) setupOutputRedirect(term_t to, + redir_context *ctx, + int redir); +COMMON(int) closeOutputRedirect(redir_context *ctx); +COMMON(void) discardOutputRedirect(redir_context *ctx); +COMMON(int) push_input_context(atom_t type); +COMMON(int) pop_input_context(void); + +#endif /*PL_FILE_H_INCLUDED*/ diff --git a/os/pl-read.c b/os/pl-read.c index 8f60d9320..7ccf9413f 100644 --- a/os/pl-read.c +++ b/os/pl-read.c @@ -943,7 +943,7 @@ pl_raw_read2(term_t from, term_t term) int chr; PL_chars_t txt; - if ( !getInputStream(from, &in) ) + if ( !getTextInputStream(from, &in) ) fail; init_read_data(&rd, in PASS_LD); diff --git a/os/pl-thread.h b/os/pl-thread.h index 93b560c9a..efcf1246a 100755 --- a/os/pl-thread.h +++ b/os/pl-thread.h @@ -46,26 +46,43 @@ extern void freeSimpleMutex(counting_mutex *m); extern counting_mutex _PL_mutexes[]; /* Prolog mutexes */ -#define L_MISC 0 -#define L_ALLOC 1 -#define L_ATOM 2 -#define L_FLAG 3 -#define L_FUNCTOR 4 -#define L_RECORD 5 -#define L_THREAD 6 -#define L_PREDICATE 7 -#define L_MODULE 8 -#define L_TABLE 9 -#define L_BREAK 10 -#define L_FILE 11 -#define L_PLFLAG 12 -#define L_OP 13 -#define L_INIT 14 -#define L_TERM 15 -#define L_GC 16 -#define L_AGC 17 -#define L_FOREIGN 18 -#define L_OS 19 +#define L_MISC 0 +#define L_ALLOC 1 +#define L_ATOM 2 +#define L_FLAG 3 +#define L_FUNCTOR 4 +#define L_RECORD 5 +#define L_THREAD 6 +#define L_PREDICATE 7 +#define L_MODULE 8 +#define L_TABLE 9 +#define L_BREAK 10 +#define L_FILE 11 +#define L_SEETELL 12 +#define L_PLFLAG 13 +#define L_OP 14 +#define L_INIT 15 +#define L_TERM 16 +#define L_GC 17 +#define L_AGC 18 +#define L_STOPTHEWORLD 19 +#define L_FOREIGN 20 +#define L_OS 21 +#ifdef __WINDOWS__ +#define L_DDE 22 +#define L_CSTACK 23 +#endif + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +The IF_MT(id, g) macro is used to bypass mutexes if threading is +disabled. We cannot do this for the L_THREAD mutex however as we need to +control when threads can be created. + +We assume id == L_THREAD is optimized away if id is known at +compile-time +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +#define IF_MT(id, g) if ( id == L_THREAD || GD->thread.enabled ) g #ifdef O_CONTENTION_STATISTICS #define countingMutexLock(cm) \ diff --git a/os/pl-write.c b/os/pl-write.c index ad6e31d6d..f226831e0 100644 --- a/os/pl-write.c +++ b/os/pl-write.c @@ -60,16 +60,19 @@ typedef struct int max_depth; /* depth limit */ int depth; /* current depth */ atom_t spacing; /* Where to insert spaces */ - Term module; /* Module for operators */ + Term module; /* Module for operators */ IOSTREAM *out; /* stream to write to */ - visited *visited; /* visited (attributed-) variables */ + term_t portray_goal; /* call/2 activated portray hook */ + term_t write_options; /* original write options */ + term_t prec_opt; /* term in write options with prec */ } write_options; word pl_nl1(term_t stream) -{ IOSTREAM *s; +{ GET_LD + IOSTREAM *s; - if ( getOutputStream(stream, &s) ) + if ( getTextOutputStream(stream, &s) ) { Sputcode('\n', s); return streamStatus(s); } @@ -183,7 +186,7 @@ varName(term_t t, char *name) static bool -writeTerm(term_t t, int prec, write_options *options) +writeTopTerm(term_t t, int prec, write_options *options) { CACHE_REGS UInt yap_flag = Use_SWI_Stream_f; @@ -221,21 +224,6 @@ writeAtomToStream(IOSTREAM *s, atom_t atom) return 1; } -int -writeAttributeMask(atom_t a) -{ if ( a == ATOM_ignore ) - { return PL_WRT_ATTVAR_IGNORE; - } else if ( a == ATOM_dots ) - { return PL_WRT_ATTVAR_DOTS; - } else if ( a == ATOM_write ) - { return PL_WRT_ATTVAR_WRITE; - } else if ( a == ATOM_portray ) - { return PL_WRT_ATTVAR_PORTRAY; - } else - return 0; -} - - static int writeBlobMask(atom_t a) { if ( a == ATOM_default ) @@ -247,23 +235,6 @@ writeBlobMask(atom_t a) } -static const opt_spec write_term_options[] = -{ { ATOM_quoted, OPT_BOOL }, - { ATOM_ignore_ops, OPT_BOOL }, - { ATOM_numbervars, OPT_BOOL }, - { ATOM_portray, OPT_BOOL }, - { ATOM_character_escapes, OPT_BOOL }, - { ATOM_max_depth, OPT_INT }, - { ATOM_module, OPT_ATOM }, - { ATOM_backquoted_string, OPT_BOOL }, - { ATOM_attributes, OPT_ATOM }, - { ATOM_priority, OPT_INT }, - { ATOM_partial, OPT_BOOL }, - { ATOM_spacing, OPT_ATOM }, - { ATOM_blobs, OPT_ATOM }, - { NULL_ATOM, 0 } -}; - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PutOpenToken() inserts a space in the output stream if the last-written and given character require a space to ensure a token-break. @@ -317,6 +288,84 @@ PutOpenToken(int c, IOSTREAM *s) return TRUE; } + + + /******************************* + * TOPLEVEL * + *******************************/ + +int +writeAttributeMask(atom_t a) +{ if ( a == ATOM_ignore ) + { return PL_WRT_ATTVAR_IGNORE; + } else if ( a == ATOM_dots ) + { return PL_WRT_ATTVAR_DOTS; + } else if ( a == ATOM_write ) + { return PL_WRT_ATTVAR_WRITE; + } else if ( a == ATOM_portray ) + { return PL_WRT_ATTVAR_PORTRAY; + } else + return 0; +} + + +static const opt_spec write_term_options[] = +{ { ATOM_quoted, OPT_BOOL }, + { ATOM_ignore_ops, OPT_BOOL }, + { ATOM_numbervars, OPT_BOOL }, + { ATOM_portray, OPT_BOOL }, + { ATOM_portray_goal, OPT_TERM }, + { ATOM_character_escapes, OPT_BOOL }, + { ATOM_max_depth, OPT_INT }, + { ATOM_module, OPT_ATOM }, + { ATOM_backquoted_string, OPT_BOOL }, + { ATOM_attributes, OPT_ATOM }, + { ATOM_priority, OPT_INT }, + { ATOM_partial, OPT_BOOL }, + { ATOM_spacing, OPT_ATOM }, + { ATOM_blobs, OPT_ATOM }, + { ATOM_cycles, OPT_BOOL }, + { ATOM_variable_names, OPT_TERM }, + { NULL_ATOM, 0 } +}; + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Call user:portray/1 if defined. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +static int +put_write_options(term_t opts_in, write_options *options) +{ GET_LD + term_t newlist = PL_new_term_ref(); + term_t precopt = PL_new_term_ref(); + fid_t fid = PL_open_foreign_frame(); + term_t head = PL_new_term_ref(); + term_t tail = PL_copy_term_ref(opts_in); + term_t newhead = PL_new_term_ref(); + term_t newtail = PL_copy_term_ref(newlist); + int rc = TRUE; + + while(rc && PL_get_list(tail, head, tail)) + { if ( !PL_is_functor(head, FUNCTOR_priority1) ) + rc = ( PL_unify_list(newtail, newhead, newtail) && + PL_unify(newhead, head) ); + } + + if ( rc ) + { rc = ( PL_unify_list(newtail, head, newtail) && + PL_unify_functor(head, FUNCTOR_priority1) && + PL_get_arg(1, head, precopt) && + PL_unify_nil(newtail) ); + } + if ( rc ) + { options->write_options = newlist; + options->prec_opt = precopt; + } + + PL_close_foreign_frame(fid); + return rc; +} + word pl_write_term3(term_t stream, term_t term, term_t opts) { GET_LD @@ -324,6 +373,7 @@ pl_write_term3(term_t stream, term_t term, term_t opts) bool ignore_ops = FALSE; bool numbervars = -1; /* not set */ bool portray = FALSE; + term_t gportray = 0; bool bqstring = truePrologFlag(PLFLAG_BACKQUOTED_STRING); bool charescape = -1; /* not set */ atom_t mname = ATOM_user; @@ -331,7 +381,10 @@ pl_write_term3(term_t stream, term_t term, term_t opts) atom_t blobs = ATOM_nil; int priority = 1200; bool partial = FALSE; - IOSTREAM *s; + bool cycles = TRUE; + term_t varnames = 0; + int local_varnames; + IOSTREAM *s = NULL; write_options options; int rc; @@ -339,10 +392,10 @@ pl_write_term3(term_t stream, term_t term, term_t opts) options.spacing = ATOM_standard; if ( !scan_options(opts, 0, ATOM_write_option, write_term_options, - "ed, &ignore_ops, &numbervars, &portray, + "ed, &ignore_ops, &numbervars, &portray, &gportray, &charescape, &options.max_depth, &mname, &bqstring, &attr, &priority, &partial, &options.spacing, - &blobs) ) + &blobs, &cycles, &varnames) ) fail; if ( attr == ATOM_nil ) @@ -381,14 +434,19 @@ pl_write_term3(term_t stream, term_t term, term_t opts) } } - if ( !getOutputStream(stream, &s) ) - fail; - options.module = lookupModule(mname); + /* vsc if ( charescape == TRUE || - // (charescape == -1 && true(options.module, CHARESCAPE)) ) - charEscapeWriteOption(options)) - options.flags |= PL_WRT_CHARESCAPES; + (charescape == -1 && true(options.module, M_CHARESCAPE)) ) + options.flags |= PL_WRT_CHARESCAPES; + if ( gportray ) + { options.portray_goal = gportray; + if ( !put_write_options(opts, &options) || + !PL_qualify(options.portray_goal, options.portray_goal) ) + return FALSE; + portray = TRUE; + } + */ if ( numbervars == -1 ) numbervars = (portray ? TRUE : FALSE); @@ -397,19 +455,37 @@ pl_write_term3(term_t stream, term_t term, term_t opts) if ( numbervars ) options.flags |= PL_WRT_NUMBERVARS; if ( portray ) options.flags |= PL_WRT_PORTRAY; if ( bqstring ) options.flags |= PL_WRT_BACKQUOTED_STRING; + if ( !cycles ) options.flags |= PL_WRT_NO_CYCLES; + + local_varnames = (varnames && false(&options, PL_WRT_NUMBERVARS)); + + BEGIN_NUMBERVARS(local_varnames); + /* vsc + if ( varnames ) + { if ( (rc=bind_varnames(varnames PASS_LD)) ) + options.flags |= PL_WRT_VARNAMES; + else + goto out; + } + */ + if ( !(rc=getTextOutputStream(stream, &s)) ) + goto out; options.out = s; if ( !partial ) PutOpenToken(EOF, s); /* reset this */ if ( (options.flags & PL_WRT_QUOTED) && !(s->flags&SIO_REPPL) ) { s->flags |= SIO_REPPL; - rc = writeTerm(term, priority, &options); + rc = writeTopTerm(term, priority, &options); s->flags &= ~SIO_REPPL; } else - { rc = writeTerm(term, priority, &options); + { rc = writeTopTerm(term, priority, &options); } - return streamStatus(s) && rc; +out: + END_NUMBERVARS(local_varnames); + + return (!s || streamStatus(s)) && rc; } @@ -426,10 +502,10 @@ PL_write_term(IOSTREAM *s, term_t term, int precedence, int flags) memset(&options, 0, sizeof(options)); options.flags = flags; options.out = s; - options.module = USER_MODULE; //MODULE_user; + options.module = MODULE_user; PutOpenToken(EOF, s); /* reset this */ - return writeTerm(term, precedence, &options); + return writeTopTerm(term, precedence, &options); } @@ -438,22 +514,24 @@ do_write2(term_t stream, term_t term, int flags) { GET_LD IOSTREAM *s; - if ( getOutputStream(stream, &s) ) + if ( getTextOutputStream(stream, &s) ) { write_options options; int rc; memset(&options, 0, sizeof(options)); options.flags = flags; options.out = s; - options.module = USER_MODULE; // MODULE_user; - // if ( options.module && true(options.module, CHARESCAPE) ) - if (charEscapeWriteOption(options)) + options.module = MODULE_user; + /* vsc if ( options.module && true(options.module, M_CHARESCAPE) ) options.flags |= PL_WRT_CHARESCAPES; + */ if ( truePrologFlag(PLFLAG_BACKQUOTED_STRING) ) options.flags |= PL_WRT_BACKQUOTED_STRING; PutOpenToken(EOF, s); /* reset this */ - rc = writeTerm(term, 1200, &options); + rc = writeTopTerm(term, 1200, &options); + if ( rc && (flags&PL_WRT_NEWLINE) ) + rc = Putc('\n', s); return streamStatus(s) && rc; } @@ -481,25 +559,22 @@ pl_print2(term_t stream, term_t term) word pl_write_canonical2(term_t stream, term_t term) { GET_LD - fid_t fid; nv_options options; word rc; - if ( !(fid = PL_open_foreign_frame()) ) - return FALSE; + BEGIN_NUMBERVARS(TRUE); + options.functor = FUNCTOR_isovar1; options.on_attvar = AV_SKIP; - options.singletons = TRUE; -#if __YAP_PROLOG__ - LOCAL_FunctorVar = FunctorHiddenVar; -#endif - numberVars(term, &options, 0 PASS_LD); - rc = do_write2(stream, term, - PL_WRT_QUOTED|PL_WRT_IGNOREOPS|PL_WRT_NUMBERVARS); -#if __YAP_PROLOG__ - LOCAL_FunctorVar = FunctorVar; -#endif - PL_discard_foreign_frame(fid); + // VSC options.singletons = PL_is_acyclic(term); + //options.numbered_check = FALSE; + + rc = ( numberVars(term, &options, 0 PASS_LD) >= 0 && + do_write2(stream, term, + PL_WRT_QUOTED|PL_WRT_IGNOREOPS|PL_WRT_NUMBERVARS) + ); + + END_NUMBERVARS(TRUE); return rc; } @@ -524,17 +599,13 @@ pl_write_canonical(term_t term) { return pl_write_canonical2(0, term); } -word /* for debugging purposes! */ +word pl_writeln(term_t term) -{ if ( PL_write_term(Serror, term, 1200, - PL_WRT_QUOTED|PL_WRT_NUMBERVARS) && - Sdprintf("\n") >= 0 ) - succeed; - - fail; +{ return do_write2(0, term, PL_WRT_NUMBERVARS|PL_WRT_NEWLINE); } + /******************************* * PUBLISH PREDICATES * *******************************/