| version 1.2, 1999/11/07 13:24:19 |
version 1.19, 2016/03/31 03:22:54 |
|
|
| /* $OpenXM$ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/option.c,v 1.18 2011/10/05 05:46:14 takayama Exp $ */ |
| #include <stdio.h> |
#include <stdio.h> |
| #include "datatype.h" |
#include "datatype.h" |
| #include "stackm.h" |
#include "stackm.h" |
|
|
| #include "kclass.h" |
#include "kclass.h" |
| #include "lookup.h" |
#include "lookup.h" |
| #include <signal.h> |
#include <signal.h> |
| |
#include "../plugin/mysig.h" |
| |
|
| extern void ctrlC(); |
extern void ctrlC(); |
| |
|
| |
|
| struct object KsystemVariable(ob) |
struct object KsystemVariable(ob) |
| struct object ob; /* Sarray */ |
struct object ob; /* Sarray */ |
| { |
{ |
| /* Don't forget to write the keys in usage.c */ |
/* Don't forget to write the keys in usage.c */ |
| extern int PrintDollar; |
extern int PrintDollar; |
| extern int Wrap; |
extern int Wrap; |
| |
extern int COutput; |
| extern struct ring *CurrentRingp; |
extern struct ring *CurrentRingp; |
| extern int Verbose; |
extern int Verbose; |
| extern int UseCriterion1; |
extern int UseCriterion1; |
| Line 25 struct object ob; /* Sarray */ |
|
| Line 27 struct object ob; /* Sarray */ |
|
| extern int CheckHomogenization; |
extern int CheckHomogenization; |
| extern int Homogenize; |
extern int Homogenize; |
| extern int Statistics; |
extern int Statistics; |
| |
extern int AutoReduce; |
| extern int Osp; |
extern int Osp; |
| extern struct operandStack StandardStack; |
extern struct operandStack StandardStack; |
| extern struct operandStack ErrorStack; |
extern struct operandStack ErrorStack; |
| Line 44 struct object ob; /* Sarray */ |
|
| Line 47 struct object ob; /* Sarray */ |
|
| extern int Homogenize_vec; |
extern int Homogenize_vec; |
| extern int CmoDMSOutputOption; |
extern int CmoDMSOutputOption; |
| extern int DebugReductionRed; /* hidden option */ |
extern int DebugReductionRed; /* hidden option */ |
| |
extern int DebugReductionEcart; |
| extern char *VersionString; |
extern char *VersionString; |
| extern int AvoidTheSameRing; |
extern int AvoidTheSameRing; |
| extern char *LeftBracket; |
extern char *LeftBracket; |
| extern char *RightBracket; |
extern char *RightBracket; |
| |
extern int SecureMode; |
| |
extern int Ecart; |
| |
extern int EcartAutomaticHomogenization; |
| |
extern int TraceLift; |
| |
extern int DoCancel; |
| |
extern int DebugContentReduction; |
| |
extern int QuoteMode; |
| |
extern int RestrictedMode, RestrictedMode_saved; |
| |
extern int UseDsmall; |
| |
|
| int n,i; |
int n,i; |
| struct object ob1,ob2,ob3,ob4; |
struct object ob1 = OINIT; |
| |
struct object ob2 = OINIT; |
| |
struct object ob3 = OINIT; |
| |
struct object ob4 = OINIT; |
| struct object rob = NullObject; |
struct object rob = NullObject; |
| switch (getoaSize(ob)) { |
switch (getoaSize(ob)) { |
| case 1: /* get the value */ |
case 1: /* get the value */ |
| Line 58 struct object ob; /* Sarray */ |
|
| Line 74 struct object ob; /* Sarray */ |
|
| switch(ob1.tag) { |
switch(ob1.tag) { |
| case Sdollar: |
case Sdollar: |
| if (strcmp(ob1.lc.str,"PrintDollar") == 0) { |
if (strcmp(ob1.lc.str,"PrintDollar") == 0) { |
| rob = KpoInteger(PrintDollar); |
rob = KpoInteger(PrintDollar); |
| }else if (strcmp(ob1.lc.str,"Wrap") == 0) { |
}else if (strcmp(ob1.lc.str,"Wrap") == 0) { |
| rob = KpoInteger(Wrap); |
rob = KpoInteger(Wrap); |
| |
}else if (strcmp(ob1.lc.str,"COutput") == 0) { |
| |
rob = KpoInteger(COutput); |
| }else if (strcmp(ob1.lc.str,"P") == 0) { |
}else if (strcmp(ob1.lc.str,"P") == 0) { |
| rob = KpoInteger(CurrentRingp->p); |
rob = KpoInteger(CurrentRingp->p); |
| }else if (strcmp(ob1.lc.str,"N") == 0) { |
}else if (strcmp(ob1.lc.str,"N") == 0) { |
| rob = KpoInteger(CurrentRingp->n); |
rob = KpoInteger(CurrentRingp->n); |
| }else if (strcmp(ob1.lc.str,"NN") == 0) { |
}else if (strcmp(ob1.lc.str,"NN") == 0) { |
| rob = KpoInteger(CurrentRingp->nn); |
rob = KpoInteger(CurrentRingp->nn); |
| }else if (strcmp(ob1.lc.str,"M") == 0) { |
}else if (strcmp(ob1.lc.str,"M") == 0) { |
| rob = KpoInteger(CurrentRingp->m); |
rob = KpoInteger(CurrentRingp->m); |
| }else if (strcmp(ob1.lc.str,"MM") == 0) { |
}else if (strcmp(ob1.lc.str,"MM") == 0) { |
| rob = KpoInteger(CurrentRingp->mm); |
rob = KpoInteger(CurrentRingp->mm); |
| }else if (strcmp(ob1.lc.str,"L") == 0) { |
}else if (strcmp(ob1.lc.str,"L") == 0) { |
| rob = KpoInteger(CurrentRingp->l); |
rob = KpoInteger(CurrentRingp->l); |
| }else if (strcmp(ob1.lc.str,"LL") == 0) { |
}else if (strcmp(ob1.lc.str,"LL") == 0) { |
| rob = KpoInteger(CurrentRingp->ll); |
rob = KpoInteger(CurrentRingp->ll); |
| }else if (strcmp(ob1.lc.str,"C") == 0) { |
}else if (strcmp(ob1.lc.str,"C") == 0) { |
| rob = KpoInteger(CurrentRingp->c); |
rob = KpoInteger(CurrentRingp->c); |
| }else if (strcmp(ob1.lc.str,"CC") == 0) { |
}else if (strcmp(ob1.lc.str,"CC") == 0) { |
| rob = KpoInteger(CurrentRingp->cc); |
rob = KpoInteger(CurrentRingp->cc); |
| }else if (strcmp(ob1.lc.str,"CurrentRingp") == 0) { |
}else if (strcmp(ob1.lc.str,"CurrentRingp") == 0) { |
| rob = KpoRingp(CurrentRingp); |
rob = KpoRingp(CurrentRingp); |
| }else if (strcmp(ob1.lc.str,"Verbose") == 0) { |
}else if (strcmp(ob1.lc.str,"Verbose") == 0) { |
| rob = KpoInteger(Verbose); |
rob = KpoInteger(Verbose); |
| }else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) { |
}else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) { |
| rob = KpoInteger(UseCriterion1); |
rob = KpoInteger(UseCriterion1); |
| }else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) { |
}else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) { |
| rob = KpoInteger(UseCriterion2B); |
rob = KpoInteger(UseCriterion2B); |
| }else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) { |
}else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) { |
| rob = KpoInteger(ReduceLowerTerms); |
rob = KpoInteger(ReduceLowerTerms); |
| }else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) { |
}else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) { |
| rob = KpoInteger(CheckHomogenization); |
rob = KpoInteger(CheckHomogenization); |
| }else if (strcmp(ob1.lc.str,"Homogenize") == 0) { |
}else if (strcmp(ob1.lc.str,"Homogenize") == 0) { |
| rob = KpoInteger(Homogenize); |
rob = KpoInteger(Homogenize); |
| }else if (strcmp(ob1.lc.str,"Statistics") == 0) { |
}else if (strcmp(ob1.lc.str,"Statistics") == 0) { |
| rob = KpoInteger(Statistics); |
rob = KpoInteger(Statistics); |
| |
}else if (strcmp(ob1.lc.str,"AutoReduce") == 0) { |
| |
rob = KpoInteger(AutoReduce); |
| }else if (strcmp(ob1.lc.str,"StackPointer") == 0) { |
}else if (strcmp(ob1.lc.str,"StackPointer") == 0) { |
| rob = KpoInteger(Osp); |
rob = KpoInteger(Osp); |
| }else if (strcmp(ob1.lc.str,"StandardOperandStack") == 0) { |
}else if (strcmp(ob1.lc.str,"StandardOperandStack") == 0) { |
| rob.tag = Sclass; |
rob.tag = Sclass; |
| rob.lc.ival = CLASSNAME_OPERANDSTACK; |
rob.lc.ival = CLASSNAME_OPERANDSTACK; |
| rob.rc.voidp = &StandardStack; |
rob.rc.voidp = &StandardStack; |
| }else if (strcmp(ob1.lc.str,"ErrorStack") == 0) { |
}else if (strcmp(ob1.lc.str,"ErrorStack") == 0) { |
| rob.tag = Sclass; |
rob.tag = Sclass; |
| rob.lc.ival = CLASSNAME_OPERANDSTACK; |
rob.lc.ival = CLASSNAME_OPERANDSTACK; |
| rob.rc.voidp = &ErrorStack; |
rob.rc.voidp = &ErrorStack; |
| }else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) { |
}else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) { |
| rob = KpoInteger(ErrorMessageMode); |
rob = KpoInteger(ErrorMessageMode); |
| }else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) { |
}else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) { |
| rob = KpoInteger(WarningMessageMode); |
rob = KpoInteger(WarningMessageMode); |
| }else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) { |
}else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) { |
| rob = KpoInteger(CatchCtrlC); |
rob = KpoInteger(CatchCtrlC); |
| /* If you catch ctrlc in KSexecuteString. */ |
/* If you catch ctrlc in KSexecuteString. */ |
| }else if (strcmp(ob1.lc.str,"Strict") == 0) { |
}else if (strcmp(ob1.lc.str,"Strict") == 0) { |
| rob = KpoInteger(Strict); |
rob = KpoInteger(Strict); |
| }else if (strcmp(ob1.lc.str,"CurrentContextp") == 0) { |
}else if (strcmp(ob1.lc.str,"CurrentContextp") == 0) { |
| rob.tag = Sclass; |
rob.tag = Sclass; |
| rob.lc.ival = CLASSNAME_CONTEXT; |
rob.lc.ival = CLASSNAME_CONTEXT; |
| rob.rc.voidp = CurrentContextp; |
rob.rc.voidp = CurrentContextp; |
| }else if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) { |
}else if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) { |
| rob.tag = Sclass; |
rob.tag = Sclass; |
| rob.lc.ival = CLASSNAME_CONTEXT; |
rob.lc.ival = CLASSNAME_CONTEXT; |
| rob.rc.voidp = PrimitiveContextp; |
rob.rc.voidp = PrimitiveContextp; |
| }else if (strcmp(ob1.lc.str,"NullContextp") == 0) { |
}else if (strcmp(ob1.lc.str,"NullContextp") == 0) { |
| rob.tag = Sclass; |
rob.tag = Sclass; |
| rob.lc.ival = CLASSNAME_CONTEXT; |
rob.lc.ival = CLASSNAME_CONTEXT; |
| rob.rc.voidp = (struct context *)NULL; |
rob.rc.voidp = (struct context *)NULL; |
| }else if (strcmp(ob1.lc.str,"Strict2") == 0) { |
}else if (strcmp(ob1.lc.str,"Strict2") == 0) { |
| rob = KpoInteger(Strict2); |
rob = KpoInteger(Strict2); |
| }else if (strcmp(ob1.lc.str,"SigIgn") == 0) { |
}else if (strcmp(ob1.lc.str,"SigIgn") == 0) { |
| rob = KpoInteger(SigIgn); |
rob = KpoInteger(SigIgn); |
| }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { |
}else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { |
| rob = KpoInteger(KSPushEnvMode); |
rob = KpoInteger(KSPushEnvMode); |
| }else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) { |
}else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) { |
| rob = KpoInteger(KanGBmessage); |
rob = KpoInteger(KanGBmessage); |
| }else if (strcmp(ob1.lc.str,"TimerOn") == 0) { |
}else if (strcmp(ob1.lc.str,"TimerOn") == 0) { |
| rob = KpoInteger(TimerOn); |
rob = KpoInteger(TimerOn); |
| }else if (strcmp(ob1.lc.str,"orderMatrix") == 0) { |
}else if (strcmp(ob1.lc.str,"orderMatrix") == 0) { |
| rob = KgetOrderMatrixOfCurrentRing(); |
rob = KgetOrderMatrixOfCurrentRing(); |
| }else if (strcmp(ob1.lc.str,"gbListTower") == 0) { |
}else if (strcmp(ob1.lc.str,"gbListTower") == 0) { |
| if (CurrentRingp->gbListTower == NULL) rob = NullObject; |
if (CurrentRingp->gbListTower == NULL) rob = NullObject; |
| else rob = *((struct object *)(CurrentRingp->gbListTower)); |
else rob = *((struct object *)(CurrentRingp->gbListTower)); |
| }else if (strcmp(ob1.lc.str,"outputOrder") == 0) { |
}else if (strcmp(ob1.lc.str,"outputOrder") == 0) { |
| n = CurrentRingp->n; |
n = CurrentRingp->n; |
| ob1 = newObjectArray(n*2); |
ob1 = newObjectArray(n*2); |
| for (i=0; i<2*n; i++) { |
for (i=0; i<2*n; i++) { |
| putoa(ob1,i,KpoInteger(CurrentRingp->outputOrder[i])); |
putoa(ob1,i,KpoInteger(CurrentRingp->outputOrder[i])); |
| } |
} |
| rob = ob1; |
rob = ob1; |
| }else if (strcmp(ob1.lc.str,"multSymbol") == 0) { |
}else if (strcmp(ob1.lc.str,"multSymbol") == 0) { |
| rob = KpoInteger(OutputStyle); |
rob = KpoInteger(OutputStyle); |
| }else if (strcmp(ob1.lc.str,"Sugar") == 0) { |
}else if (strcmp(ob1.lc.str,"Sugar") == 0) { |
| rob = KpoInteger(Sugar); |
rob = KpoInteger(Sugar); |
| }else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) { |
}else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) { |
| rob = KpoInteger(Homogenize_vec); |
rob = KpoInteger(Homogenize_vec); |
| }else if (strcmp(ob1.lc.str,"Schreyer")==0) { |
}else if (strcmp(ob1.lc.str,"Schreyer")==0) { |
| rob = KpoInteger( CurrentRingp->schreyer ); |
rob = KpoInteger( CurrentRingp->schreyer ); |
| }else if (strcmp(ob1.lc.str,"ringName")==0) { |
}else if (strcmp(ob1.lc.str,"ringName")==0) { |
| rob = KpoString( CurrentRingp->name ); |
rob = KpoString( CurrentRingp->name ); |
| }else if (strcmp(ob1.lc.str,"CmoDMSOutputOption")==0) { |
}else if (strcmp(ob1.lc.str,"CmoDMSOutputOption")==0) { |
| rob = KpoInteger( CmoDMSOutputOption ); |
rob = KpoInteger( CmoDMSOutputOption ); |
| }else if (strcmp(ob1.lc.str,"Version")==0) { |
}else if (strcmp(ob1.lc.str,"Version")==0) { |
| rob = KpoString(VersionString); |
rob = KpoString(VersionString); |
| }else if (strcmp(ob1.lc.str,"RingStack")==0) { |
}else if (strcmp(ob1.lc.str,"RingStack")==0) { |
| KsetUpRing(NullObject,NullObject,NullObject,NullObject,NullObject); |
KsetUpRing(NullObject,NullObject,NullObject,NullObject,NullObject); |
| rob = KSpop(); /* This is exceptional style */ |
rob = KSpop(); /* This is exceptional style */ |
| }else if (strcmp(ob1.lc.str,"AvoidTheSameRing")==0) { |
}else if (strcmp(ob1.lc.str,"AvoidTheSameRing")==0) { |
| rob = KpoInteger(AvoidTheSameRing); |
rob = KpoInteger(AvoidTheSameRing); |
| }else if (strcmp(ob1.lc.str,"LeftBracket")==0) { |
}else if (strcmp(ob1.lc.str,"LeftBracket")==0) { |
| rob = KpoString(LeftBracket); |
rob = KpoString(LeftBracket); |
| }else if (strcmp(ob1.lc.str,"RightBracket")==0) { |
}else if (strcmp(ob1.lc.str,"RightBracket")==0) { |
| rob = KpoString(RightBracket); |
rob = KpoString(RightBracket); |
| |
}else if (strcmp(ob1.lc.str,"SecureMode")==0) { |
| |
rob = KpoInteger(SecureMode); |
| |
}else if (strcmp(ob1.lc.str,"RestrictedMode")==0) { |
| |
rob = KpoInteger(RestrictedMode); |
| |
}else if (strcmp(ob1.lc.str,"Ecart")==0) { |
| |
rob = KpoInteger(Ecart); |
| |
}else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization")==0) { |
| |
rob = KpoInteger(EcartAutomaticHomogenization); |
| |
}else if (strcmp(ob1.lc.str,"TraceLift")==0) { |
| |
rob = KpoInteger(TraceLift); |
| |
}else if (strcmp(ob1.lc.str,"DoCancel")==0) { |
| |
rob = KpoInteger(DoCancel); |
| |
}else if (strcmp(ob1.lc.str,"DebugContentReduction")==0) { |
| |
rob = KpoInteger(DebugContentReduction); |
| |
}else if (strcmp(ob1.lc.str,"QuoteMode")==0) { |
| |
rob = KpoInteger(QuoteMode); |
| |
}else if (strcmp(ob1.lc.str,"UseDsmall")==0) { |
| |
rob = KpoInteger(UseDsmall); |
| }else{ |
}else{ |
| warningKan("KsystemVariable():Unknown key word.\n"); |
warningKan("KsystemVariable():Unknown key word.\n"); |
| } |
} |
| break; |
break; |
| default: |
default: |
| Line 186 struct object ob; /* Sarray */ |
|
| Line 224 struct object ob; /* Sarray */ |
|
| switch (Lookup[ob1.tag][ob2.tag]) { |
switch (Lookup[ob1.tag][ob2.tag]) { |
| case SdollarSinteger: |
case SdollarSinteger: |
| if (strcmp(ob1.lc.str,"PrintDollar") == 0) { |
if (strcmp(ob1.lc.str,"PrintDollar") == 0) { |
| PrintDollar = ob2.lc.ival; |
PrintDollar = ob2.lc.ival; |
| rob = KpoInteger(PrintDollar); |
rob = KpoInteger(PrintDollar); |
| }else if (strcmp(ob1.lc.str,"Wrap") == 0) { |
}else if (strcmp(ob1.lc.str,"Wrap") == 0) { |
| Wrap = ob2.lc.ival; |
Wrap = ob2.lc.ival; |
| rob = KpoInteger(Wrap); |
rob = KpoInteger(Wrap); |
| /*}else if (strcmp(ob1.lc.str,"P") == 0) { |
/*}else if (strcmp(ob1.lc.str,"P") == 0) { |
| P = ob2.lc.ival; Q should be set here too. |
P = ob2.lc.ival; Q should be set here too. |
| CurrentRingp->p = P; |
CurrentRingp->p = P; |
| rob = KpoInteger(P); */ |
rob = KpoInteger(P); */ |
| |
}else if (strcmp(ob1.lc.str,"COutput") == 0) { |
| |
COutput = ob2.lc.ival; |
| |
rob = KpoInteger(COutput); |
| }else if (strcmp(ob1.lc.str,"NN") == 0) { |
}else if (strcmp(ob1.lc.str,"NN") == 0) { |
| if (ob2.lc.ival <= CurrentRingp->n && ob2.lc.ival >= CurrentRingp->m) { |
if (ob2.lc.ival <= CurrentRingp->n && ob2.lc.ival >= CurrentRingp->m) { |
| CurrentRingp->nn = ob2.lc.ival; |
CurrentRingp->nn = ob2.lc.ival; |
| }else{ |
}else{ |
| warningKan("New value of NN is out of bound."); |
warningKan("New value of NN is out of bound."); |
| } |
} |
| rob = KpoInteger(ob1.lc.ival); |
rob = KpoInteger(ob1.lc.ival); |
| }else if (strcmp(ob1.lc.str,"Verbose") == 0) { |
}else if (strcmp(ob1.lc.str,"Verbose") == 0) { |
| Verbose = ob2.lc.ival; |
Verbose = ob2.lc.ival; |
| rob = KpoInteger(Verbose); |
rob = KpoInteger(Verbose); |
| }else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) { |
}else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) { |
| UseCriterion1 = ob2.lc.ival; |
UseCriterion1 = ob2.lc.ival; |
| rob = KpoInteger(UseCriterion1); |
rob = KpoInteger(UseCriterion1); |
| }else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) { |
}else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) { |
| UseCriterion2B = ob2.lc.ival; |
UseCriterion2B = ob2.lc.ival; |
| rob = KpoInteger(UseCriterion2B); |
rob = KpoInteger(UseCriterion2B); |
| }else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) { |
}else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) { |
| ReduceLowerTerms = ob2.lc.ival; |
ReduceLowerTerms = ob2.lc.ival; |
| rob = KpoInteger(ReduceLowerTerms); |
rob = KpoInteger(ReduceLowerTerms); |
| }else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) { |
}else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) { |
| CheckHomogenization = ob2.lc.ival; |
CheckHomogenization = ob2.lc.ival; |
| rob = KpoInteger(CheckHomogenization); |
rob = KpoInteger(CheckHomogenization); |
| }else if (strcmp(ob1.lc.str,"Homogenize") == 0) { |
}else if (strcmp(ob1.lc.str,"Homogenize") == 0) { |
| Homogenize = ob2.lc.ival; |
Homogenize = ob2.lc.ival; |
| rob = KpoInteger(Homogenize); |
rob = KpoInteger(Homogenize); |
| }else if (strcmp(ob1.lc.str,"Statistics") == 0) { |
}else if (strcmp(ob1.lc.str,"Statistics") == 0) { |
| Statistics = ob2.lc.ival; |
Statistics = ob2.lc.ival; |
| rob = KpoInteger(Statistics); |
rob = KpoInteger(Statistics); |
| |
}else if (strcmp(ob1.lc.str,"AutoReduce") == 0) { |
| |
AutoReduce = ob2.lc.ival; |
| |
rob = KpoInteger(AutoReduce); |
| }else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) { |
}else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) { |
| ErrorMessageMode = ob2.lc.ival; |
ErrorMessageMode = ob2.lc.ival; |
| rob = KpoInteger(ErrorMessageMode); |
rob = KpoInteger(ErrorMessageMode); |
| }else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) { |
}else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) { |
| WarningMessageMode = ob2.lc.ival; |
WarningMessageMode = ob2.lc.ival; |
| rob = KpoInteger(WarningMessageMode); |
rob = KpoInteger(WarningMessageMode); |
| }else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) { |
}else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) { |
| CatchCtrlC = ob2.lc.ival; |
CatchCtrlC = ob2.lc.ival; |
| rob = KpoInteger(CatchCtrlC); |
rob = KpoInteger(CatchCtrlC); |
| }else if (strcmp(ob1.lc.str,"Strict") == 0) { |
}else if (strcmp(ob1.lc.str,"Strict") == 0) { |
| Strict = ob2.lc.ival; |
Strict = ob2.lc.ival; |
| rob = KpoInteger(Strict); |
rob = KpoInteger(Strict); |
| }else if (strcmp(ob1.lc.str,"Strict2") == 0) { |
}else if (strcmp(ob1.lc.str,"Strict2") == 0) { |
| Strict2 = ob2.lc.ival; |
Strict2 = ob2.lc.ival; |
| rob = KpoInteger(Strict2); |
rob = KpoInteger(Strict2); |
| }else if (strcmp(ob1.lc.str,"SigIgn") == 0) { |
}else if (strcmp(ob1.lc.str,"SigIgn") == 0) { |
| SigIgn = ob2.lc.ival; |
SigIgn = ob2.lc.ival; |
| if (SigIgn) signal(SIGINT,SIG_IGN); |
if (SigIgn) mysignal(SIGINT,SIG_IGN); |
| else signal(SIGINT,ctrlC); |
else mysignal(SIGINT,ctrlC); |
| rob = KpoInteger(SigIgn); |
rob = KpoInteger(SigIgn); |
| }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { |
}else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { |
| KSPushEnvMode = ob2.lc.ival; |
KSPushEnvMode = ob2.lc.ival; |
| rob = KpoInteger(KSPushEnvMode); |
rob = KpoInteger(KSPushEnvMode); |
| }else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) { |
}else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) { |
| KanGBmessage = ob2.lc.ival; |
KanGBmessage = ob2.lc.ival; |
| rob = KpoInteger(KanGBmessage); |
rob = KpoInteger(KanGBmessage); |
| }else if (strcmp(ob1.lc.str,"TimerOn") == 0) { |
}else if (strcmp(ob1.lc.str,"TimerOn") == 0) { |
| TimerOn = ob2.lc.ival; |
TimerOn = ob2.lc.ival; |
| rob = KpoInteger(TimerOn); |
rob = KpoInteger(TimerOn); |
| }else if (strcmp(ob1.lc.str,"multSymbol") == 0) { |
}else if (strcmp(ob1.lc.str,"multSymbol") == 0) { |
| OutputStyle = KopInteger(ob2); |
OutputStyle = KopInteger(ob2); |
| rob = KpoInteger(OutputStyle); |
rob = KpoInteger(OutputStyle); |
| }else if (strcmp(ob1.lc.str,"Sugar") == 0) { |
}else if (strcmp(ob1.lc.str,"Sugar") == 0) { |
| Sugar = KopInteger(ob2); |
Sugar = KopInteger(ob2); |
| if (Sugar && ReduceLowerTerms) { |
if (Sugar && ReduceLowerTerms) { |
| ReduceLowerTerms = 0; |
ReduceLowerTerms = 0; |
| warningKan("ReduceLowerTerms is automatically set to 0, because Sugar = 1."); |
warningKan("ReduceLowerTerms is automatically set to 0, because Sugar = 1."); |
| /* You cannot use both ReduceLowerTerms and sugar. |
/* You cannot use both ReduceLowerTerms and sugar. |
| See gb.c, reduction_sugar. */ |
See gb.c, reduction_sugar. */ |
| } |
} |
| rob = KpoInteger(Sugar); |
rob = KpoInteger(Sugar); |
| }else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) { |
}else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) { |
| Homogenize_vec = KopInteger(ob2); |
Homogenize_vec = KopInteger(ob2); |
| rob = KpoInteger(Homogenize_vec); |
rob = KpoInteger(Homogenize_vec); |
| }else if (strcmp(ob1.lc.str,"CmoDMSOutputOption") == 0) { |
}else if (strcmp(ob1.lc.str,"CmoDMSOutputOption") == 0) { |
| CmoDMSOutputOption = KopInteger(ob2); |
CmoDMSOutputOption = KopInteger(ob2); |
| rob = KpoInteger(CmoDMSOutputOption); |
rob = KpoInteger(CmoDMSOutputOption); |
| }else if (strcmp(ob1.lc.str,"DebugReductionRed") == 0) { |
}else if (strcmp(ob1.lc.str,"DebugReductionRed") == 0) { |
| DebugReductionRed = KopInteger(ob2); |
DebugReductionRed = KopInteger(ob2); |
| rob = KpoInteger(DebugReductionRed); |
rob = KpoInteger(DebugReductionRed); |
| |
}else if (strcmp(ob1.lc.str,"DebugReductionEcart") == 0) { |
| |
DebugReductionEcart = KopInteger(ob2); |
| |
rob = KpoInteger(DebugReductionEcart); |
| }else if (strcmp(ob1.lc.str,"AvoidTheSameRing") == 0) { |
}else if (strcmp(ob1.lc.str,"AvoidTheSameRing") == 0) { |
| AvoidTheSameRing = KopInteger(ob2); |
AvoidTheSameRing = KopInteger(ob2); |
| rob = KpoInteger(AvoidTheSameRing); |
rob = KpoInteger(AvoidTheSameRing); |
| |
}else if (strcmp(ob1.lc.str,"SecureMode") == 0) { |
| |
if (KopInteger(ob2) >= SecureMode) { |
| |
SecureMode = KopInteger(ob2); |
| |
}else{ |
| |
errorKan1("%s\n","You cannot weaken the security level."); |
| |
} |
| |
rob = KpoInteger(SecureMode); |
| |
}else if (strcmp(ob1.lc.str,"RestrictedMode") == 0) { |
| |
if (KopInteger(ob2) >= RestrictedMode) { |
| |
RestrictedMode = KopInteger(ob2); |
| |
RestrictedMode_saved = RestrictedMode; |
| |
}else{ |
| |
errorKan1("%s\n","You cannot weaken the RestrictedMode level."); |
| |
} |
| |
rob = KpoInteger(RestrictedMode); |
| |
}else if (strcmp(ob1.lc.str,"Ecart") == 0) { |
| |
Ecart = KopInteger(ob2); |
| |
rob = KpoInteger(Ecart); |
| |
}else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization") == 0) { |
| |
EcartAutomaticHomogenization = KopInteger(ob2); |
| |
rob = KpoInteger(EcartAutomaticHomogenization); |
| |
}else if (strcmp(ob1.lc.str,"TraceLift") == 0) { |
| |
TraceLift = KopInteger(ob2); |
| |
rob = KpoInteger(TraceLift); |
| |
}else if (strcmp(ob1.lc.str,"DoCancel") == 0) { |
| |
DoCancel = KopInteger(ob2); |
| |
rob = KpoInteger(DoCancel); |
| |
}else if (strcmp(ob1.lc.str,"DebugContentReduction") == 0) { |
| |
DebugContentReduction = KopInteger(ob2); |
| |
rob = KpoInteger(DebugContentReduction); |
| |
}else if (strcmp(ob1.lc.str,"QuoteMode") == 0) { |
| |
QuoteMode = KopInteger(ob2); |
| |
rob = KpoInteger(QuoteMode); |
| |
}else if (strcmp(ob1.lc.str,"UseDsmall") == 0) { |
| |
UseDsmall = KopInteger(ob2); |
| |
rob = KpoInteger(UseDsmall); |
| }else{ |
}else{ |
| warningKan("KsystemVariable():Unknown key word.\n"); |
warningKan("KsystemVariable():Unknown key word.\n"); |
| } |
} |
| break; |
break; |
| case SdollarSdollar: |
case SdollarSdollar: |
| if (strcmp(ob1.lc.str,"ringName") == 0) { |
if (strcmp(ob1.lc.str,"ringName") == 0) { |
| CurrentRingp->name = KopString(ob2); |
CurrentRingp->name = KopString(ob2); |
| rob = KpoString(CurrentRingp->name); |
rob = KpoString(CurrentRingp->name); |
| }else if (strcmp(ob1.lc.str,"LeftBracket") == 0) { |
}else if (strcmp(ob1.lc.str,"LeftBracket") == 0) { |
| LeftBracket = KopString(ob2); |
LeftBracket = KopString(ob2); |
| rob = KpoString(LeftBracket); |
rob = KpoString(LeftBracket); |
| }else if (strcmp(ob1.lc.str,"RightBracket") == 0) { |
}else if (strcmp(ob1.lc.str,"RightBracket") == 0) { |
| RightBracket = KopString(ob2); |
RightBracket = KopString(ob2); |
| rob = KpoString(RightBracket); |
rob = KpoString(RightBracket); |
| }else{ |
}else{ |
| warningKan("KsystemVariable():Unknown key word.\n"); |
warningKan("KsystemVariable():Unknown key word.\n"); |
| } |
} |
| break; |
break; |
| case SdollarSring: |
case SdollarSring: |
| if (strcmp(ob1.lc.str,"CurrentRingp") == 0) { |
if (strcmp(ob1.lc.str,"CurrentRingp") == 0) { |
| CurrentRingp = ob2.lc.ringp; |
CurrentRingp = ob2.lc.ringp; |
| rob = KpoRingp(CurrentRingp); |
rob = KpoRingp(CurrentRingp); |
| }else{ |
}else{ |
| warningKan("KsystemVariable():Unknown key word.\n"); |
warningKan("KsystemVariable():Unknown key word.\n"); |
| } |
} |
| break; |
break; |
| case SdollarSclass: |
case SdollarSclass: |
| if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) { |
if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) { |
| if (ectag(ob2) == CLASSNAME_CONTEXT) { |
if (ectag(ob2) == CLASSNAME_CONTEXT) { |
| PrimitiveContextp = (struct context *)ob2.rc.voidp; |
PrimitiveContextp = (struct context *)ob2.rc.voidp; |
| rob = ob2; |
rob = ob2; |
| }else{ |
}else{ |
| warningKan("The second argument must be class.context.\n"); |
warningKan("The second argument must be class.context.\n"); |
| rob = NullObject; |
rob = NullObject; |
| } |
} |
| }else { |
}else { |
| warningKan("KsystemVariable():Unknown key word.\n"); |
warningKan("KsystemVariable():Unknown key word.\n"); |
| } |
} |
| break; |
break; |
| case SdollarSlist: |
case SdollarSlist: |
| if (strcmp(ob1.lc.str,"gbListTower") == 0) { |
if (strcmp(ob1.lc.str,"gbListTower") == 0) { |
| if (AvoidTheSameRing) |
if (AvoidTheSameRing) |
| warningKan("Changing gbListTower may cause a trouble under AvoidTheSameRing == 1."); |
warningKan("Changing gbListTower may cause a trouble under AvoidTheSameRing == 1."); |
| CurrentRingp->gbListTower = newObject(); |
CurrentRingp->gbListTower = newObject(); |
| *((struct object *)(CurrentRingp->gbListTower)) = ob2; |
*((struct object *)(CurrentRingp->gbListTower)) = ob2; |
| rob = *((struct object *)(CurrentRingp->gbListTower)); |
rob = *((struct object *)(CurrentRingp->gbListTower)); |
| }else { |
}else { |
| warningKan("KsystemVariable(): Unknown key word to set value.\n"); |
warningKan("KsystemVariable(): Unknown key word to set value.\n"); |
| } |
} |
| break; |
break; |
| case SdollarSarray: |
case SdollarSarray: |
| if (strcmp(ob1.lc.str,"outputOrder") == 0) { |
if (strcmp(ob1.lc.str,"outputOrder") == 0) { |
| rob = KsetOutputOrder(ob2,CurrentRingp); |
rob = KsetOutputOrder(ob2,CurrentRingp); |
| }else if (strcmp(ob1.lc.str,"variableNames") == 0) { |
}else if (strcmp(ob1.lc.str,"variableNames") == 0) { |
| rob = KsetVariableNames(ob2,CurrentRingp); |
rob = KsetVariableNames(ob2,CurrentRingp); |
| }else { |
}else { |
| warningKan("KsystemVariable(): Unknown key word to set value.\n"); |
warningKan("KsystemVariable(): Unknown key word to set value.\n"); |
| } |
} |
| break; |
break; |
| default: |
default: |
| Line 344 struct object ob; /* Sarray */ |
|
| Line 427 struct object ob; /* Sarray */ |
|
| switch(Lookup[ob1.tag][ob2.tag]) { |
switch(Lookup[ob1.tag][ob2.tag]) { |
| case SdollarSdollar: |
case SdollarSdollar: |
| if (strcmp(ob2.lc.str,"var") == 0) { |
if (strcmp(ob2.lc.str,"var") == 0) { |
| if (strcmp(ob1.lc.str,"x")==0) { |
if (strcmp(ob1.lc.str,"x")==0) { |
| if (ob3.tag != Sinteger) { |
if (ob3.tag != Sinteger) { |
| warningKan("[$x$ $var$ ? ] The 3rd argument must be integer."); |
warningKan("[$x$ $var$ ? ] The 3rd argument must be integer."); |
| break; |
break; |
| } |
} |
| if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) { |
if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) { |
| rob = KpoString(CurrentRingp->x[ob3.lc.ival]); |
rob = KpoString(CurrentRingp->x[ob3.lc.ival]); |
| }else{ |
}else{ |
| warningKan("[$x$ $var$ ? ] The 3rd argument is out of range."); |
warningKan("[$x$ $var$ ? ] The 3rd argument is out of range."); |
| break; |
break; |
| } |
} |
| }else if (strcmp(ob1.lc.str,"D")==0) { |
}else if (strcmp(ob1.lc.str,"D")==0) { |
| if (ob3.tag != Sinteger) { |
if (ob3.tag != Sinteger) { |
| warningKan("[$D$ $var$ ? ] The 3rd argument must be integer."); |
warningKan("[$D$ $var$ ? ] The 3rd argument must be integer."); |
| break; |
break; |
| } |
} |
| if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) { |
if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) { |
| rob = KpoString(CurrentRingp->D[ob3.lc.ival]); |
rob = KpoString(CurrentRingp->D[ob3.lc.ival]); |
| }else{ |
}else{ |
| warningKan("[$D$ $var$ ? ] The 3rd argument is out of range."); |
warningKan("[$D$ $var$ ? ] The 3rd argument is out of range."); |
| break; |
break; |
| } |
} |
| } |
} |
| }else{ |
}else{ |
| warningKan("KsystemVariable(): Invalid argument.\n"); |
warningKan("KsystemVariable(): Invalid argument.\n"); |
| } |
} |
| break; |
break; |
| default: |
default: |
| Line 384 struct object ob; /* Sarray */ |
|
| Line 467 struct object ob; /* Sarray */ |
|
| } |
} |
| |
|
| warningOption(str) |
warningOption(str) |
| char *str; |
char *str; |
| { |
{ |
| fprintf(stderr,"Warning(option.c): %s\n",str); |
fprintf(stderr,"Warning(option.c): %s\n",str); |
| } |
} |