From 83f25afc41b66b08c4022501a841f6e79938b311 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Tue, 23 Feb 2010 00:29:17 +0000 Subject: [PATCH] add address_bits flag (request from Paulo Moura). --- C/sysbits.c | 11 +++++++++++ pl/directives.yap | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/C/sysbits.c b/C/sysbits.c index 29080b069..a6afde9db 100755 --- a/C/sysbits.c +++ b/C/sysbits.c @@ -2972,6 +2972,16 @@ p_ld_path(void) return Yap_unify(ARG1,MkAtomTerm(Yap_LookupAtom(YAP_LIBDIR))); } +static Int +p_address_bits(void) +{ +#if SIZEOF_INT_P==4 + return Yap_unify(ARG1,MkIntTerm(32)); +#else + return Yap_unify(ARG1,MkIntTerm(64)); +#endif +} + #ifdef _WIN32 @@ -3193,6 +3203,7 @@ Yap_InitSysPreds(void) Yap_InitCPred ("$unix", 0, p_unix, SafePredFlag); Yap_InitCPred ("$win32", 0, p_win32, SafePredFlag); Yap_InitCPred ("$ld_path", 1, p_ld_path, SafePredFlag); + Yap_InitCPred ("$address_bits", 1, p_address_bits, SafePredFlag); #ifdef _WIN32 Yap_InitCPred ("win_registry_get_value", 3, p_win_registry_get_value,0); #endif diff --git a/pl/directives.yap b/pl/directives.yap index 93a08c43b..3eac18043 100644 --- a/pl/directives.yap +++ b/pl/directives.yap @@ -876,10 +876,20 @@ yap_flag(max_threads,X) :- yap_flag(max_threads,X) :- '$do_error'(domain_error(flag_value,max_threads+X),yap_flag(max_threads,X)). +yap_flag(address_bits,X) :- + var(X), !, + '$address_bits'(X). +yap_flag(address_bits,X) :- + integer(X), X > 0, !, + '$do_error'(permission_error(modify,flag,address_bits),yap_flag(address_bits,X)). +yap_flag(address_bits,X) :- + '$do_error'(domain_error(flag_value,address_bits+X),yap_flag(address_bits,X)). + yap_flag(dialect,yap). '$show_yap_flag_opts'(V,Out) :- ( + V = address_bits ; V = answer_format ; V = argv ; V = bounded ;