![]() ![]() | ![]() |
version 1.16, 2002/01/04 17:08:22 | version 1.25, 2003/10/20 09:20:14 | ||
---|---|---|---|
|
|
||
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | ||
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | ||
* | * | ||
* $OpenXM: OpenXM_contrib2/asir2000/builtin/ctrl.c,v 1.15 2001/08/06 01:48:32 noro Exp $ | * $OpenXM: OpenXM_contrib2/asir2000/builtin/ctrl.c,v 1.24 2003/10/20 09:17:52 noro Exp $ | ||
*/ | */ | ||
#include "ca.h" | #include "ca.h" | ||
#include "parse.h" | #include "parse.h" | ||
|
|
||
}; | }; | ||
extern int prtime,nez,echoback,bigfloat; | extern int prtime,nez,echoback,bigfloat; | ||
extern int GC_free_space_numerator,GC_free_space_divisor,debug_up,no_prompt; | extern int GC_free_space_numerator,GC_free_space_divisor,debug_up; | ||
extern int GC_max_heap_size,Verbose,hideargs,hex_output,do_server_in_X11; | extern int GC_max_heap_size,Verbose,hideargs,hex_output,do_server_in_X11; | ||
extern int do_message; | extern int do_message; | ||
extern int ox_batch,ox_check,ox_exchange_mathcap; | extern int ox_batch,ox_check,ox_exchange_mathcap; | ||
extern int f4_nocheck; | extern int f4_nocheck; | ||
extern int StrassenSize; | extern int StrassenSize; | ||
extern int outputstyle; | |||
extern int fortran_output; | extern int fortran_output; | ||
extern int real_digit; | extern int real_digit; | ||
#if defined(INTERVAL) | #if defined(INTERVAL) | ||
|
|
||
extern int double_output; | extern int double_output; | ||
extern int use_new_hensel; | extern int use_new_hensel; | ||
extern int print_quote; | extern int print_quote; | ||
extern int show_crossref; | |||
extern Obj user_defined_prompt; | |||
static struct { | static struct { | ||
char *key; | char *key; | ||
|
|
||
{"cputime",&prtime}, | {"cputime",&prtime}, | ||
{"nez",&nez}, | {"nez",&nez}, | ||
{"echo",&echoback}, | {"echo",&echoback}, | ||
#if DO_PLOT | #if defined(DO_PLOT) | ||
{"bigfloat",&bigfloat}, | {"bigfloat",&bigfloat}, | ||
#endif | #endif | ||
{"verbose",&Verbose}, | {"verbose",&Verbose}, | ||
{"quiet_mode",&do_quiet}, | |||
{"hideargs",&hideargs}, | {"hideargs",&hideargs}, | ||
{"hex",&hex_output}, | {"hex",&hex_output}, | ||
{"debug_window",&do_server_in_X11}, | {"debug_window",&do_server_in_X11}, | ||
{"message",&do_message}, | {"message",&do_message}, | ||
{"debug_up",&debug_up}, | {"debug_up",&debug_up}, | ||
{"no_prompt",&no_prompt}, | {"no_prompt",&do_quiet}, | ||
{"ox_batch",&ox_batch}, | {"ox_batch",&ox_batch}, | ||
{"ox_check",&ox_check}, | {"ox_check",&ox_check}, | ||
{"ox_exchange_mathcap",&ox_exchange_mathcap}, | {"ox_exchange_mathcap",&ox_exchange_mathcap}, | ||
{"f4_nocheck",&f4_nocheck}, | {"f4_nocheck",&f4_nocheck}, | ||
{"StrassenSize",&StrassenSize}, | {"StrassenSize",&StrassenSize}, | ||
{"outputstyle",&outputstyle}, | |||
{"double_output",&double_output}, | {"double_output",&double_output}, | ||
{"real_digit",&real_digit}, | {"real_digit",&real_digit}, | ||
{"fortran_output",&fortran_output}, | {"fortran_output",&fortran_output}, | ||
{"new_hensel",&use_new_hensel}, | {"new_hensel",&use_new_hensel}, | ||
{"print_quote",&print_quote}, | {"print_quote",&print_quote}, | ||
{"show_crossref",&show_crossref}, | |||
#if defined(INTERVAL) | #if defined(INTERVAL) | ||
{"zerorewrite",&zerorewrite}, | {"zerorewrite",&zerorewrite}, | ||
#endif | #endif | ||
|
|
||
NODE arg; | NODE arg; | ||
Q *rp; | Q *rp; | ||
{ | { | ||
int t,i; | int t,i,n; | ||
N num,den; | N num,den; | ||
Q c; | Q c; | ||
char *key; | char *key; | ||
char buf[BUFSIZ]; | char buf[BUFSIZ]; | ||
char *str; | |||
if ( !arg ) { | if ( !arg ) { | ||
*rp = 0; | *rp = 0; | ||
|
|
||
GC_free_space_numerator = BD(den)[0]; | GC_free_space_numerator = BD(den)[0]; | ||
} | } | ||
NDTOQ(num,den,1,*rp); | NDTOQ(num,den,1,*rp); | ||
return; | |||
} else if ( !strcmp(key,"prompt") ) { | |||
/* special treatment is necessary for "prompt" */ | |||
if ( argc(arg) == 1 ) { | |||
*rp = (Q)user_defined_prompt; | |||
} else { | |||
c = (Q)ARG1(arg); | |||
if ( !c ) { | |||
do_quiet = 1; | |||
user_defined_prompt = 0; | |||
*rp = 0; | |||
} else if ( OID(c) == O_STR ) { | |||
str = BDY((STRING)c); | |||
for ( i = 0, n = 0; str[i]; i++ ) | |||
if ( str[i] == '%' ) | |||
n++; | |||
if ( n >= 2 ) | |||
error("ctrl : prompt : invalid prompt specification"); | |||
do_quiet = 1; | |||
user_defined_prompt = (Obj)c; | |||
*rp = c; | |||
} else if ( NUM(c) && RATN(c) && UNIQ(c) ) { | |||
user_defined_prompt = 0; | |||
do_quiet = 0; | |||
} else { | |||
error("ctrl : prompt : invalid argument"); | |||
} | |||
} | |||
return; | return; | ||
} | } | ||
for ( i = 0; ctrls[i].key; i++ ) | for ( i = 0; ctrls[i].key; i++ ) |