31#define SYSTEM_OPTION_0 "attributed_variables,rational_trees]"
33#define SYSTEM_OPTION_1 "threads,"
35#define SYSTEM_OPTION_3 "big_numbers,"
37#define SYSTEM_OPTION_4 "depth_limit,"
40#define SYSTEM_OPTION_5 "low_level_tracer,"
43#define SYSTEM_OPTION_6 "or_parallelism,"
46#define SYSTEM_OPTION_7 "readline,"
49#define SYSTEM_OPTION_8 "tabling,"
52static inline Term nat(Term inp) {
54 Yap_Error(INSTANTIATION_ERROR, inp,
"set_prolog_flag: value must be %s",
59 Int i = IntOfTerm(inp);
62 Yap_Error(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, inp,
63 "set_prolog_flag: value must be %s",
">= 0");
66 Yap_Error(TYPE_ERROR_INTEGER, inp,
"set_prolog_flag: value must be %s",
71static inline Term at2n(Term inp) {
72 Yap_Error(PERMISSION_ERROR_READ_ONLY_FLAG, inp,
"set_prolog_flag %s",
77static inline Term isfloat(Term inp) {
79 Yap_Error(INSTANTIATION_ERROR, inp,
"set_prolog_flag: value must be %s",
84 if (IsFloatTerm(inp)) {
87 Yap_Error(TYPE_ERROR_FLOAT, inp,
"set_prolog_flag: value must be %s",
92extern Term ro(Term inp);
93extern Term aro(Term inp);
94extern Term booleanFlag( Term inp );
95extern Term febooleanFlag( Term inp );
96extern Term synerr(Term inp);
99static inline Term filler(Term inp) {
return inp; }
101static inline Term list_filler(Term inp) {
102 if (IsVarTerm(inp) || IsPairTerm(inp) || inp == TermNil)
105 Yap_Error(TYPE_ERROR_LIST, inp,
"set_prolog_flag in {codes,string}");
112static inline Term isatom(Term inp) {
113 if (IsVarTerm(inp)) {
114 Yap_Error(INSTANTIATION_ERROR, inp,
"set_prolog_flag %s",
115 "value must be bound");
118 if (IsStringTerm(inp)) {
119 inp = MkStringTerm(RepAtom(AtomOfTerm(inp))->StrOfAE);
123 Yap_Error(TYPE_ERROR_ATOM, inp,
"set_prolog_flag");
127static inline Term isadress(Term inp) {
128 if (IsVarTerm(inp)) {
129 Yap_Error(INSTANTIATION_ERROR, inp,
"set_prolog_flag %s",
130 "value must be bound");
133 if (IsAddressTerm(inp))
135 Yap_Error(TYPE_ERROR_ATOM, inp,
"set_prolog_flag");
139static inline Term options(Term inp) {
140 return Yap_IsGroundTerm(inp) ? inp : TermZERO;
143static inline const char * rootdir(Term inp) {
149static inline Term ok(Term inp) {
return inp; }
178 flag_helper_func helper;
205#define YAP_FLAG(ITEM, NAME, WRITABLE, DEF, INIT, HELPER) ITEM
206#define START_LOCAL_FLAGS enum THREAD_LOCAL_FLAGS {
207#define END_LOCAL_FLAGS NULL_LFLAG };
208#define START_GLOBAL_FLAGS enum GLOBAL_FLAGS {
209#define END_GLOBAL_FLAGS NULL_GFLAG};
220#undef START_LOCAL_FLAGS
221#undef END_LOCAL_FLAGS
222#undef START_GLOBAL_FLAGS
223#undef END_GLOBAL_FLAGS
227bool Yap_set_flag(Term tflag, Term t2);
228Term getYapFlag(Term tflag);
232static inline bool check_refs_to_ltable(
void) {
return true; }
234static inline void setAtomicGlobalPrologFlag(
int id, Term v) {
235 GLOBAL_Flags[id].at = v;
238static inline Term getAtomicGlobalPrologFlag(
int id) {
239 return GLOBAL_Flags[id].at;
242static inline Term getAtomicLocalPrologFlag(
int id) {
244 return LOCAL_Flags[id].at;
247static inline void setAtomicLocalPrologFlag(
int id, Term v) {
249 check_refs_to_ltable();
250 LOCAL_Flags[id].at = v;
253static inline void setBooleanLocalPrologFlag(
int id,
bool v) {
255 check_refs_to_ltable();
257 LOCAL_Flags[id].at = TermTrue;
259 LOCAL_Flags[id].at = TermFalse;
263static inline void setBooleanGlobalPrologFlag(
int id,
bool v) {
265 GLOBAL_Flags[id].at = TermTrue;
267 GLOBAL_Flags[id].at = TermFalse;
271static inline bool trueGlobalPrologFlag(
int id) {
272 return GLOBAL_Flags[id].at == TermTrue;
275static inline bool falseGlobalPrologFlag(
int id) {
276 return GLOBAL_Flags[id].at == TermFalse;
279static inline bool trueLocalPrologFlag(
int id) {
281 return LOCAL_Flags[id].at == TermTrue;
284static inline bool falseLocalPrologFlag(
int id) {
286 return LOCAL_Flags[id].at == TermFalse;
289static inline bool isoLanguageFlag(
void) {
290 return GLOBAL_Flags[ISO_FLAG].at == TermTrue;
293static inline bool strictISOFlag(
void) {
294 return GLOBAL_Flags[STRICT_ISO_FLAG].at == TermTrue;
297static inline bool silentMode(
void) {
298 return GLOBAL_Flags[VERBOSE_FLAG].at == TermSilent;
301static inline bool verboseMode(
void) {
302 return GLOBAL_Flags[VERBOSE_FLAG].at != TermSilent;
305static inline bool FileErrors(
void) {
return LOCAL_Flags[FILE_ERRORS_FLAG].at == TermError; }
308static inline void setVerbosity(Term val) {
309 GLOBAL_Flags[VERBOSE_FLAG].at = val;
312static inline bool setSyntaxErrorsFlag(Term val) {
313 if ((val = synerr(val)) == TermZERO)
316 LOCAL_Flags[SYNTAX_ERRORS_FLAG].at = val;
320static inline Term getSyntaxErrorsFlag(
void) {
322 return LOCAL_Flags[SYNTAX_ERRORS_FLAG].at;
326static inline bool setReadTermBackQuotesFlag(Term val) {
328 GLOBAL_Flags[BACK_QUOTES_FLAG].at = val;
332static inline Term getBackQuotesFlag(Term mod) {
334 unsigned int flags = Yap_GetModuleEntry(mod)->
flags;
335 if (flags & BCKQ_ATOM) {
337 }
else if (flags & BCKQ_STRING) {
339 }
else if (flags & BCKQ_CHARS) {
347static inline Term getSingleQuotesFlag(Term mod) {
349 unsigned int flags = Yap_GetModuleEntry(mod)->
flags;
350 if (flags & SNGQ_ATOM) {
352 }
else if (flags & SNGQ_STRING) {
354 }
else if (flags & SNGQ_CHARS) {
362static inline Term getDoubleQuotesFlag(Term mod) {
364 unsigned int flags = Yap_GetModuleEntry(mod)->
flags;
365 if (flags & DBLQ_ATOM) {
367 }
else if (flags & DBLQ_STRING) {
369 }
else if (flags & DBLQ_CHARS) {
377static inline Term indexingMode(
void) {
return GLOBAL_Flags[INDEX_FLAG].at; }
379static inline const char *floatFormat(
void) {
380 return RepAtom(AtomOfTerm(GLOBAL_Flags[FLOAT_FORMAT_FLAG].at))->rep.uStrOfAE;
384static inline size_t indexingDepth(
void) {
385 return IntOfTerm(GLOBAL_Flags[INDEX_SUB_TERM_SEARCH_DEPTH_FLAG].at);
388static inline Term gcTrace(
void) {
return GLOBAL_Flags[GC_TRACE_FLAG].at; }
390Term Yap_UnknownFlag(Term mod);
394#define Yap_ArgListToVector(l, def, n, a, e) \
395 Yap_ArgListToVector__(__FILE__, __FUNCTION__, __LINE__, l, def, n, a, e)
397extern xarg *Yap_ArgListToVector__(
const char *file,
const char *
function,
int lineno,Term listl,
const param_t *def,
int n,
xarg *a,
402#define Yap_ArgList2ToVector(l, def, n, e) \
403 Yap_ArgList2ToVector__(__FILE__, __FUNCTION__, __LINE__, l, def, n, e)
int Yap_ArgKey(Atom key, const param_t *def, int n)
Returns the index of an argument key, or -1 if not found.
xarg * Yap_ArgList2ToVector__(const char *file, const char *function, int lineno, Term listl, const param2_t *def, int n, yap_error_number e)
Yap_ArgList2ToVector is much the same as before, but assumes parameters also have something called a ...
bool Yap_InitSIGSEGV(Term enable)
This function implements the sigsegv prolog flag.
union flagTerm flag_term
a flag is represented as a Prolog term
global flags and their default values
void Yap_InitFlags(bool)
Init System Prolog flags.
prolog_flag/2 support, notice flag is initialized as text
unsigned int flags
module's owner file
a flag is represented as a Prolog term