| /**************************************************************/ |
| /* ********************************************************** */ |
| /* * * */ |
| /* * FLAGS OF SPASS * */ |
| /* * * */ |
| /* * $Module: FLAGS * */ |
| /* * * */ |
| /* * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 * */ |
| /* * MPI fuer Informatik * */ |
| /* * * */ |
| /* * This program is free software; you can redistribute * */ |
| /* * it and/or modify it under the terms of the GNU * */ |
| /* * General Public License as published by the Free * */ |
| /* * Software Foundation; either version 2 of the License, * */ |
| /* * or (at your option) any later version. * */ |
| /* * * */ |
| /* * This program 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 General Public * */ |
| /* * License for more details. * */ |
| /* * * */ |
| /* * You should have received a copy of the GNU General * */ |
| /* * Public License along with this program; if not, write * */ |
| /* * to the Free Software Foundation, Inc., 59 Temple * */ |
| /* * Place, Suite 330, Boston, MA 02111-1307 USA * */ |
| /* * * */ |
| /* * * */ |
| /* $Revision$ * */ |
| /* $State$ * */ |
| /* $Date$ * */ |
| /* $Author$ * */ |
| /* * * */ |
| /* * Contact: * */ |
| /* * Christoph Weidenbach * */ |
| /* * MPI fuer Informatik * */ |
| /* * Stuhlsatzenhausweg 85 * */ |
| /* * 66123 Saarbruecken * */ |
| /* * Email: weidenb@mpi-sb.mpg.de * */ |
| /* * Germany * */ |
| /* * * */ |
| /* ********************************************************** */ |
| /**************************************************************/ |
| |
| |
| /* $RCSfile$ */ |
| |
| #ifndef _FLAGS_ |
| #define _FLAGS_ |
| |
| #include <limits.h> |
| #include <stdio.h> |
| |
| #include "memory.h" |
| #include "misc.h" |
| |
| /**************************************************************/ |
| /* Data Structures and Constants */ |
| /**************************************************************/ |
| |
| extern const int flag_CLEAN; |
| |
| /* Define the legal values for all flags as data types. |
| |
| All flags have a minimum and a maximum. Legal values are |
| within that range, *excluding* the minimum, maximum value. By using |
| flag_XXXMIN and flag_XXXMAX we have a simple test for a |
| flag's correctness: |
| |
| if |
| flag value <= flag minimum |
| or flag value >= flag maximum |
| then |
| the flag has an illegal state. |
| |
| Boolean flags have two legal values: |
| * flag_XXXOFF ( = 0) |
| * flag_XXXON ( = 1) |
| */ |
| |
| /* State definitions for boolean flags */ |
| typedef enum { flag_OFF = 0, |
| flag_ON = 1 |
| } FLAG_BOOLEAN; |
| |
| /* State definitions for flag_APPLYDEFS */ |
| typedef enum { flag_APPLYDEFSMIN = -1, |
| flag_APPLYDEFSOFF = flag_OFF, |
| flag_APPLYDEFSMAX = INT_MAX |
| } FLAG_APPLYDEFSTYPE; |
| |
| /* State definitions for flag_AUTO */ |
| typedef enum { flag_AUTOMIN = -1, |
| flag_AUTOOFF = flag_OFF, |
| flag_AUTOON = flag_ON, |
| flag_AUTOMAX |
| } FLAG_AUTOTYPE; |
| |
| /* State definitions for flag_BOUNDLOOPS */ |
| typedef enum { flag_BOUNDLOOPSMIN = 0, |
| flag_BOUNDLOOPSMAX = INT_MAX |
| } FLAG_BOUNDLOOPSTYPE; |
| |
| /* State definitions for flag_BOUNDMODE */ |
| typedef enum { flag_BOUNDMODEMIN = -1, |
| flag_BOUNDMODEUNLIMITED, |
| flag_BOUNDMODERESTRICTEDBYWEIGHT, |
| flag_BOUNDMODERESTRICTEDBYDEPTH, |
| flag_BOUNDMODEMAX |
| } FLAG_BOUNDMODETYPE; |
| |
| /* State definitions for flag_BOUNDSTART */ |
| typedef enum { flag_BOUNDSTARTMIN = -2, |
| flag_BOUNDSTARTUNLIMITED, |
| flag_BOUNDSTARTMAX = INT_MAX |
| } FLAG_BOUNDSTARTTYPE; |
| |
| /* State definitions for flag_CNFFEQREDUCTIONS */ |
| typedef enum { flag_CNFFEQREDUCTIONSMIN = -1, |
| flag_CNFFEQREDUCTIONSOFF = flag_OFF, |
| flag_CNFFEQREDUCTIONSON = flag_ON, |
| flag_CNFFEQREDUCTIONSMAX |
| } FLAG_CNFFEQREDUCTIONSTYPE; |
| |
| /* State definitions for flag_CNFOPTSKOLEM */ |
| typedef enum { flag_CNFOPTSKOLEMMIN = -1, |
| flag_CNFOPTSKOLEMOFF = flag_OFF, |
| flag_CNFOPTSKOLEMON = flag_ON, |
| flag_CNFOPTSKOLEMMAX |
| } flag_CNFOPTSKOLEMTYPE; |
| |
| /* State definitions for flag_CNFPRENAMING */ |
| typedef enum { flag_CNFPRENAMINGMIN = -1, |
| flag_CNFPRENAMINGOFF = flag_OFF, |
| flag_CNFPRENAMINGON = flag_ON, |
| flag_CNFPRENAMINGMAX |
| } FLAG_CNFPRENAMINGTYPE; |
| |
| /* State definitions for flag_CNFPROOFSTEPS */ |
| typedef enum { flag_CNFPROOFSTEPSMIN = 0, |
| flag_CNFPROOFSTEPSMAX = INT_MAX |
| } FLAG_CNFPROOFSTEPSTYPE; |
| |
| /* State definitions for flag_CNFRENAMING */ |
| typedef enum { flag_CNFRENAMINGMIN = -1, |
| flag_CNFRENAMINGOFF = flag_OFF, |
| flag_CNFRENAMINGON = flag_ON, |
| flag_CNFRENAMINGMAX |
| } FLAG_CNFRENAMINGTYPE; |
| |
| /* State definitions for flag_CNFSTRSKOLEM */ |
| typedef enum { flag_CNFSTRSKOLEMMIN = -1, |
| flag_CNFSTRSKOLEMOFF = flag_OFF, |
| flag_CNFSTRSKOLEMON = flag_ON, |
| flag_CNFSTRSKOLEMMAX |
| } FLAG_CNFSTRSKOLEMTYPE; |
| |
| /* State definitions for flag_DOCPROOF */ |
| typedef enum { flag_DOCPROOFMIN = -1, |
| flag_DOCPROOFOFF = flag_OFF, |
| flag_DOCPROOFON = flag_ON, |
| flag_DOCPROOFMAX |
| } FLAG_DOCPROOFTYPE; |
| |
| /* State definitions for flag_DOCSPLIT */ |
| typedef enum { flag_DOCSPLITMIN = -1, |
| flag_DOCSPLITOFF = flag_OFF, |
| flag_DOCSPLITON = flag_ON, |
| flag_DOCSPLITMAX |
| } FLAG_DOCSPLITTYPE; |
| |
| /* State definitions for flag_DOCSST */ |
| typedef enum { flag_DOCSSTMIN = -1, |
| flag_DOCSSTOFF = flag_OFF, |
| flag_DOCSSTON = flag_ON, |
| flag_DOCSSTMAX |
| } FLAG_DOCSSTTYPE; |
| |
| /* State definitions for flag_FLOTTER */ |
| typedef enum { flag_FLOTTERMIN = -1, |
| flag_FLOTTEROFF = flag_OFF, |
| flag_FLOTTERON = flag_ON, |
| flag_FLOTTERMAX |
| } FLAG_FLOTTERTYPE; |
| |
| /* State definitions for flag_FPDFGPROOF */ |
| typedef enum { flag_FPDFGPROOFMIN = -1, |
| flag_FPDFGPROOFOFF = flag_OFF, |
| flag_FPDFGPROOFON = flag_ON, |
| flag_FPDFGPROOFMAX |
| } FLAG_FPDFGPROOFTYPE; |
| |
| /* State definitions for flag_FPMODEL */ |
| typedef enum { flag_FPMODELMIN = -1, |
| flag_FPMODELOFF = flag_OFF, |
| flag_FPMODELALLCLAUSES, |
| flag_FPMODELPOTENTIALLYPRODUCTIVECLAUSES, |
| flag_FPMODELMAX |
| } FLAG_FPMODELTYPE; |
| |
| /* State definitions for flag_FULLRED */ |
| typedef enum { flag_FULLREDMIN = -1, |
| flag_FULLREDOFF = flag_OFF, |
| flag_FULLREDON = flag_ON, |
| flag_FULLREDMAX |
| } FLAG_FULLREDTYPE; |
| |
| /* State definitions for flag_FUNCWEIGHT */ |
| typedef enum { flag_FUNCWEIGHTMIN = 0, |
| flag_FUNCWEIGHTMAX = INT_MAX |
| } FLAG_FUNCWEIGHTTYPE; |
| |
| /* State definitions for flag_IBUR */ |
| typedef enum { flag_BOUNDEDDEPTHUNITRESOLUTIONMIN = -1, |
| flag_BOUNDEDDEPTHUNITRESOLUTIONOFF = flag_OFF, |
| flag_BOUNDEDDEPTHUNITRESOLUTIONON = flag_ON, |
| flag_BOUNDEDDEPTHUNITRESOLUTIONMAX |
| } FLAG_IBURTYPE; |
| |
| /* State definitions for flag_IDEF */ |
| typedef enum { flag_DEFINITIONAPPLICATIONMIN = -1, |
| flag_DEFINITIONAPPLICATIONOFF = flag_OFF, |
| flag_DEFINITIONAPPLICATIONON = flag_ON, |
| flag_DEFINITIONAPPLICATIONMAX |
| } FLAG_IDEFTYPE; |
| |
| /* State definitions for flag_IEMS */ |
| typedef enum { flag_EMPTYSORTMIN = -1, |
| flag_EMPTYSORTOFF = flag_OFF, |
| flag_EMPTYSORTON = flag_ON, |
| flag_EMPTYSORTMAX |
| } FLAG_IEMSTYPE; |
| |
| /* State definitions for flag_IEQF */ |
| typedef enum { flag_EQUALITYFACTORINGMIN = -1, |
| flag_EQUALITYFACTORINGOFF = flag_OFF, |
| flag_EQUALITYFACTORINGON = flag_ON, |
| flag_EQUALITYFACTORINGMAX |
| } FLAG_IEQFTYPE; |
| |
| /* State definitions for flag_IEQR */ |
| typedef enum { flag_EQUALITYRESOLUTIONMIN = -1, |
| flag_EQUALITYRESOLUTIONOFF = flag_OFF, |
| flag_EQUALITYRESOLUTIONON = flag_ON, |
| flag_EQUALITYRESOLUTIONMAX |
| } FLAG_IEQRTYPE; |
| |
| /* State definitions for flag_IERR */ |
| typedef enum { flag_REFLEXIVITYRESOLUTIONMIN = -1, |
| flag_REFLEXIVITYRESOLUTIONOFF = flag_OFF, |
| flag_REFLEXIVITYRESOLUTIONON = flag_ON, |
| flag_REFLEXIVITYRESOLUTIONMAX |
| } FLAG_IERRTYPE; |
| |
| /* State definitions for flag_IMPM */ |
| typedef enum { flag_MERGINGPARAMODULATIONMIN = -1, |
| flag_MERGINGPARAMODULATIONOFF = flag_OFF, |
| flag_MERGINGPARAMODULATIONON = flag_ON, |
| flag_MERGINGPARAMODULATIONMAX |
| } FLAG_IMPMTYPE; |
| |
| /* State definitions for flag_INTERACTIVE */ |
| typedef enum { flag_INTERACTIVEMIN = -1, |
| flag_INTERACTIVEOFF = flag_OFF, |
| flag_INTERACTIVEON = flag_ON, |
| flag_INTERACTIVEMAX |
| } FLAG_INTERACTIVETYPE; |
| |
| /* State definitions for flag_IOFC */ |
| typedef enum { flag_FACTORINGMIN = -1, |
| flag_FACTORINGOFF = flag_OFF, |
| flag_FACTORINGONLYRIGHT, |
| flag_FACTORINGRIGHTANDLEFT, |
| flag_FACTORINGMAX |
| } FLAG_IOFCTYPE; |
| |
| /* State definitions for flag_IOHY */ |
| typedef enum { flag_ORDEREDHYPERRESOLUTIONMIN = -1, |
| flag_ORDEREDHYPERRESOLUTIONOFF = flag_OFF, |
| flag_ORDEREDHYPERRESOLUTIONON = flag_ON, |
| flag_ORDEREDHYPERRESOLUTIONMAX |
| } FLAG_IOHYTYPE; |
| |
| /* State definitions for flag_IOPM */ |
| typedef enum { flag_ORDEREDPARAMODULATIONMIN = -1, |
| flag_ORDEREDPARAMODULATIONOFF = flag_OFF, |
| flag_ORDEREDPARAMODULATIONON = flag_ON, |
| flag_ORDEREDPARAMODULATIONMAX |
| } FLAG_IOPMTYPE; |
| |
| /* State definitions for flag_IORE */ |
| typedef enum { flag_ORDEREDRESOLUTIONMIN = -1, |
| flag_ORDEREDRESOLUTIONOFF = flag_OFF, |
| flag_ORDEREDRESOLUTIONNOEQUATIONS, |
| flag_ORDEREDRESOLUTIONWITHEQUATIONS, |
| flag_ORDEREDRESOLUTIONMAX |
| } FLAG_IORETYPE; |
| |
| /* State definitions for flag_ISFC */ |
| typedef enum { flag_STANDARDFACTORINGMIN = -1, |
| flag_STANDARDFACTORINGOFF = flag_OFF, |
| flag_STANDARDFACTORINGON = flag_ON, |
| flag_STANDARDFACTORINGMAX |
| } FLAG_ISFCTYPE; |
| |
| /* State definitions for flag_ISHY */ |
| typedef enum { flag_STANDARDHYPERRESOLUTIONMIN = -1, |
| flag_STANDARDHYPERRESOLUTIONOFF = flag_OFF, |
| flag_STANDARDHYPERRESOLUTIONON = flag_ON, |
| flag_STANDARDHYPERRESOLUTIONMAX |
| } FLAG_ISHYTYPE; |
| |
| /* State definitions for flag_ISOR */ |
| typedef enum { flag_SORTRESOLUTIONMIN = -1, |
| flag_SORTRESOLUTIONOFF = flag_OFF, |
| flag_SORTRESOLUTIONON = flag_ON, |
| flag_SORTRESOLUTIONMAX |
| } FLAG_ISORTYPE; |
| |
| /* State definitions for flag_ISPL */ |
| typedef enum { flag_SUPERPOSITIONLEFTMIN = -1, |
| flag_SUPERPOSITIONLEFTOFF = flag_OFF, |
| flag_SUPERPOSITIONLEFTON = flag_ON, |
| flag_SUPERPOSITIONLEFTMAX |
| } FLAG_ISPLTYPE; |
| |
| /* State definitions for flag_ISPM */ |
| typedef enum { flag_STANDARDPARAMODULATIONMIN = -1, |
| flag_STANDARDPARAMODULATIONOFF = flag_OFF, |
| flag_STANDARDPARAMODULATIONON = flag_ON, |
| flag_STANDARDPARAMODULATIONMAX |
| } FLAG_ISPMTYPE; |
| |
| /* State definitions for flag_ISPR */ |
| typedef enum { flag_SUPERPOSITIONRIGHTMIN = -1, |
| flag_SUPERPOSITIONRIGHTOFF = flag_OFF, |
| flag_SUPERPOSITIONRIGHTON = flag_ON, |
| flag_SUPERPOSITIONRIGHTMAX |
| } FLAG_ISPRTYPE; |
| |
| /* State definitions for flag_ISRE */ |
| typedef enum { flag_STANDARDRESOLUTIONMIN = -1, |
| flag_STANDARDRESOLUTIONOFF = flag_OFF, |
| flag_STANDARDRESOLUTIONNOEQUATIONS, |
| flag_STANDARDRESOLUTIONWITHEQUATIONS, |
| flag_STANDARDRESOLUTIONMAX |
| } FLAG_ISRETYPE; |
| |
| /* State definitions for flag_IUNR */ |
| typedef enum { flag_UNITRESOLUTIONMIN = -1, |
| flag_UNITRESOLUTIONOFF = flag_OFF, |
| flag_UNITRESOLUTIONON = flag_ON, |
| flag_UNITRESOLUTIONMAX |
| } FLAG_IUNRTYPE; |
| |
| /* State definitions for flag_IURR */ |
| typedef enum { flag_UNITRESULTINGRESOLUTIONMIN = -1, |
| flag_UNITRESULTINGRESOLUTIONOFF = flag_OFF, |
| flag_UNITRESULTINGRESOLUTIONON = flag_ON, |
| flag_UNITRESULTINGRESOLUTIONMAX |
| } FLAG_IURRTYPE; |
| |
| /* State definitions for flag_LOOPS */ |
| typedef enum { flag_LOOPSMIN = -2, |
| flag_LOOPSUNLIMITED, |
| flag_LOOPSMAX = INT_MAX |
| } FLAG_LOOPSTYPE; |
| |
| /* State definitions for flag_MEMORY */ |
| typedef enum { flag_MEMORYMIN = -2, |
| flag_MEMORYUNLIMITED, |
| flag_MEMORYMAX = INT_MAX |
| } FLAG_MEMORYTYPE; |
| |
| /* State definitions for flag_ORD */ |
| typedef enum { flag_ORDMIN = -1, |
| flag_ORDKBO, |
| flag_ORDRPOS, |
| flag_ORDMAX |
| } FLAG_ORDTYPE; |
| |
| /* State definitions for flag_PAPPLYDEFS */ |
| typedef enum { flag_PAPPLYDEFSMIN = -1, |
| flag_PAPPLYDEFSOFF = flag_OFF, |
| flag_PAPPLYDEFSON = flag_ON, |
| flag_PAPPLYDEFSMAX |
| } FLAG_PAPPLYDEFSTYPE; |
| |
| /* State definitions for flag_PBDC */ |
| typedef enum { flag_PBDCMIN = -1, |
| flag_PBDCOFF = flag_OFF, |
| flag_PBDCON = flag_ON, |
| flag_PBDCMAX |
| } FLAG_PBDCTYPE; |
| |
| /* State definitions for flag_PBINC */ |
| typedef enum { flag_PBINCMIN = -1, |
| flag_PBINCOFF = flag_OFF, |
| flag_PBINCON = flag_ON, |
| flag_PBINCMAX |
| } FLAG_PBINCTYPE; |
| |
| /* State definitions for flag_PMRR */ |
| typedef enum { flag_PMRRMIN = -1, |
| flag_PMRROFF = flag_OFF, |
| flag_PMRRON = flag_ON, |
| flag_PMRRMAX |
| } FLAG_PMRRTYPE; |
| |
| /* State definitions for flag_PCON */ |
| typedef enum { flag_PCONMIN = -1, |
| flag_PCONOFF = flag_OFF, |
| flag_PCONON = flag_ON, |
| flag_PCONMAX |
| } FLAG_PCONTYPE; |
| |
| /* State definitions for flag_PDER */ |
| typedef enum { flag_PDERMIN = -1, |
| flag_PDEROFF = flag_OFF, |
| flag_PDERON = flag_ON, |
| flag_PDERMAX |
| } FLAG_PDERTYPE; |
| |
| /* State definitions for flag_PEMPTYCLAUSE */ |
| typedef enum { flag_PEMPTYCLAUSEMIN = -1, |
| flag_PEMPTYCLAUSEOFF = flag_OFF, |
| flag_PEMPTYCLAUSEON = flag_ON, |
| flag_PEMPTYCLAUSEMAX |
| } FLAG_PEMPTYCLAUSETYPE; |
| |
| /* State definitions for flag_PFLAGS */ |
| typedef enum { flag_PFLAGSMIN = -1, |
| flag_PFLAGSOFF = flag_OFF, |
| flag_PFLAGSON = flag_ON, |
| flag_PFLAGSMAX |
| } FLAG_PFLAGSTYPE; |
| |
| /* State definitions for flag_PGIVEN */ |
| typedef enum { flag_PGIVENMIN = -1, |
| flag_PGIVENOFF = flag_OFF, |
| flag_PGIVENON = flag_ON, |
| flag_PGIVENMAX |
| } FLAG_PGIVENTYPE; |
| |
| /* State definitions for flag_PKEPT */ |
| typedef enum { flag_PKEPTMIN = -1, |
| flag_PKEPTOFF = flag_OFF, |
| flag_PKEPTON = flag_ON, |
| flag_PKEPTMAX |
| } FLAG_PKEPTTYPE; |
| |
| /* State definitions for flag_PLABELS */ |
| typedef enum { flag_PLABELSMIN = -1, |
| flag_PLABELSOFF = flag_OFF, |
| flag_PLABELSON = flag_ON, |
| flag_PLABELSMAX |
| } FLAG_PLABELSTYPE; |
| |
| /* State definitions for flag_POBV */ |
| typedef enum { flag_POBVMIN = -1, |
| flag_POBVOFF = flag_OFF, |
| flag_POBVON = flag_ON, |
| flag_POBVMAX |
| } FLAG_POBVTYPE; |
| |
| /* State definitions for flag_POPTSKOLEM */ |
| typedef enum { flag_POPTSKOLEMMIN = -1, |
| flag_POPTSKOLEMOFF = flag_OFF, |
| flag_POPTSKOLEMON = flag_ON, |
| flag_POPTSKOLEMMAX |
| } FLAG_POPTSKOLEMTYPE; |
| |
| /* State definitions for flag_PPROBLEM */ |
| typedef enum { flag_PPROBLEMMIN = -1, |
| flag_PPROBLEMOFF = flag_OFF, |
| flag_PPROBLEMON = flag_ON, |
| flag_PPROBLEMMAX |
| } FLAG_PPROBLEMTYPE; |
| |
| /* State definitions for flag_PREFCON */ |
| typedef enum { flag_PREFCONMIN = 0, |
| flag_PREFCONUNCHANGED, |
| flag_PREFCONMAX = INT_MAX |
| } FLAG_PREFCONTYPE; |
| |
| /* State definitions for flag_PREFVAR */ |
| typedef enum { flag_PREFVARMIN = -1, |
| flag_PREFVAROFF = flag_OFF, |
| flag_PREFVARON = flag_ON, |
| flag_PREFVARMAX |
| } FLAG_PREFVARTYPE; |
| |
| /* State definitions for flag_PREW */ |
| typedef enum { flag_PREWMIN = -1, |
| flag_PREWOFF = flag_OFF, |
| flag_PREWON = flag_ON, |
| flag_PREWMAX |
| } FLAG_PREWTYPE; |
| |
| /* State definitions for flag_PCRW */ |
| typedef enum { flag_PCRWMIN = -1, |
| flag_PCRWOFF = flag_OFF, |
| flag_PCRWON = flag_ON, |
| flag_PCRWMAX |
| } FLAG_PCRWTYPE; |
| |
| /* State definitions for flag_PAED */ |
| typedef enum { flag_PAEDMIN = -1, |
| flag_PAEDOFF = flag_OFF, |
| flag_PAEDON = flag_ON, |
| flag_PAEDMAX |
| } FLAG_PAEDTYPE; |
| |
| /* State definitions for flag_PSSI */ |
| typedef enum { flag_PSSIMIN = -1, |
| flag_PSSIOFF = flag_OFF, |
| flag_PSSION = flag_ON, |
| flag_PSSIMAX |
| } FLAG_PSSITYPE; |
| |
| /* State definitions for flag_PSST */ |
| typedef enum { flag_PSSTMIN = -1, |
| flag_PSSTOFF = flag_OFF, |
| flag_PSSTON = flag_ON, |
| flag_PSSTMAX |
| } FLAG_PSSTTYPE; |
| |
| /* State definitions for flag_PSTATISTIC */ |
| typedef enum { flag_PSTATISTICMIN = -1, |
| flag_PSTATISTICOFF = flag_OFF, |
| flag_PSTATISTICON = flag_ON, |
| flag_PSTATISTICMAX |
| } FLAG_PSTATISTICTYPE; |
| |
| /* State definitions for flag_PSTRSKOLEM */ |
| typedef enum { flag_PSTRSKOLEMMIN = -1, |
| flag_PSTRSKOLEMOFF = flag_OFF, |
| flag_PSTRSKOLEMON = flag_ON, |
| flag_PSTRSKOLEMMAX |
| } FLAG_PSTRSKOLEMTYPE; |
| |
| /* State definitions for flag_PSUB */ |
| typedef enum { flag_PSUBMIN = -1, |
| flag_PSUBOFF = flag_OFF, |
| flag_PSUBON = flag_ON, |
| flag_PSUBMAX |
| } FLAG_PSUBTYPE; |
| |
| /* State definitions for flag_PTAUT */ |
| typedef enum { flag_PTAUTMIN = -1, |
| flag_PTAUTOFF = flag_OFF, |
| flag_PTAUTON = flag_ON, |
| flag_PTAUTMAX |
| } FLAG_PTAUTTYPE; |
| |
| /* State definitions for flag_PUNC */ |
| typedef enum { flag_PUNCMIN = -1, |
| flag_PUNCOFF = flag_OFF, |
| flag_PUNCON = flag_ON, |
| flag_PUNCMAX |
| } FLAG_PUNCTYPE; |
| |
| /* State definitions for flag_RBMRR */ |
| typedef enum { flag_RBMRRMIN = -1, |
| flag_RBMRROFF = flag_OFF, |
| flag_RBMRRON = flag_ON, |
| flag_RBMRRMAX |
| } FLAG_RBMRRTYPE; |
| |
| /* State definitions for flag_RBREW */ |
| typedef enum { flag_RBREWMIN = -1, |
| flag_RBREWOFF = flag_OFF, |
| flag_RBREWON = flag_ON, |
| flag_RBREWMAX |
| } FLAG_RBREWTYPE; |
| |
| /* State definitions for flag_RBCRW */ |
| typedef enum { flag_RBCRWMIN = -1, |
| flag_RBCRWOFF = flag_OFF, |
| flag_RBCRWON = flag_ON, |
| flag_RBCRWMAX |
| } FLAG_RBCRWTYPE; |
| |
| /* State definitions for flag_RBSUB */ |
| typedef enum { flag_RBSUBMIN = -1, |
| flag_RBSUBOFF = flag_OFF, |
| flag_RBSUBON = flag_ON, |
| flag_RBSUBMAX |
| } FLAG_RBSUBTYPE; |
| |
| /* State definitions for flag_RCON */ |
| typedef enum { flag_RCONMIN = -1, |
| flag_RCONOFF = flag_OFF, |
| flag_RCONON = flag_ON, |
| flag_RCONMAX |
| } FLAG_RCONTYPE; |
| |
| /* State definitions for flag_RFMRR */ |
| typedef enum { flag_RFMRRMIN = -1, |
| flag_RFMRROFF = flag_OFF, |
| flag_RFMRRON = flag_ON, |
| flag_RFMRRMAX |
| } FLAG_RFMRRTYPE; |
| |
| /* State definitions for flag_RFREW */ |
| typedef enum { flag_RFREWMIN = -1, |
| flag_RFREWOFF = flag_OFF, |
| flag_RFREWON = flag_ON, |
| flag_RFREWMAX |
| } FLAG_RFREWTYPE; |
| |
| /* State definitions for flag_RFCRW */ |
| typedef enum { flag_RFCRWMIN = -1, |
| flag_RFCRWOFF = flag_OFF, |
| flag_RFCRWON = flag_ON, |
| flag_RFCRWMAX |
| } FLAG_RFCRWTYPE; |
| |
| /* State definitions for flag_RFSUB */ |
| typedef enum { flag_RFSUBMIN = -1, |
| flag_RFSUBOFF = flag_OFF, |
| flag_RFSUBON = flag_ON, |
| flag_RFSUBMAX |
| } FLAG_RFSUBTYPE; |
| |
| /* State definitions for flag_RINPUT */ |
| typedef enum { flag_RINPUTMIN = -1, |
| flag_RINPUTOFF = flag_OFF, |
| flag_RINPUTON = flag_ON, |
| flag_RINPUTMAX |
| } FLAG_RINPUTTYPE; |
| |
| /* State definitions for flag_ROBV */ |
| typedef enum { flag_ROBVMIN = -1, |
| flag_ROBVOFF = flag_OFF, |
| flag_ROBVON = flag_ON, |
| flag_ROBVMAX |
| } FLAG_ROBVTYPE; |
| |
| /* State definitions for flag_RAED */ |
| typedef enum { flag_RAEDMIN = -1, |
| flag_RAEDOFF = flag_OFF, |
| flag_RAEDSOUND, |
| flag_RAEDPOTUNSOUND, |
| flag_RAEDMAX |
| } FLAG_RAEDTYPE; |
| |
| /* State definitions for flag_RSSI */ |
| typedef enum { flag_RSSIMIN = -1, |
| flag_RSSIOFF = flag_OFF, |
| flag_RSSION = flag_ON, |
| flag_RSSIMAX |
| } FLAG_RSSITYPE; |
| |
| /* State definitions for flag_RSST */ |
| typedef enum { flag_RSSTMIN = -1, |
| flag_RSSTOFF = flag_OFF, |
| flag_RSSTON = flag_ON, |
| flag_RSSTMAX |
| } FLAG_RSSTTYPE; |
| |
| /* State definitions for flag_RTAUT */ |
| typedef enum { flag_RTAUTMIN = -1, |
| flag_RTAUTOFF = flag_OFF, |
| flag_RTAUTSYNTACTIC, |
| flag_RTAUTSEMANTIC, |
| flag_RTAUTMAX |
| } FLAG_RTAUTTYPE; |
| |
| /* State definitions for flag_RTER */ |
| typedef enum { flag_RTERMIN = -1, |
| flag_RTEROFF = flag_OFF, |
| flag_RTERMAX = INT_MAX |
| } FLAG_RTERTYPE; |
| |
| /* State definitions for flag_RUNC */ |
| typedef enum { flag_RUNCMIN = -1, |
| flag_RUNCOFF = flag_OFF, |
| flag_RUNCON = flag_ON, |
| flag_RUNCMAX |
| } FLAG_RUNCTYPE; |
| |
| /* State definitions for flag_SATINPUT */ |
| typedef enum { flag_SATINPUTMIN = -1, |
| flag_SATINPUTOFF = flag_OFF, |
| flag_SATINPUTON = flag_ON, |
| flag_SATINPUTMAX |
| } FLAG_SATINPUTTYPE; |
| |
| /* State definitions for flag_SELECT */ |
| typedef enum { flag_SELECTMIN = -1, |
| flag_SELECTOFF = flag_OFF, |
| flag_SELECTIFSEVERALMAXIMAL, |
| flag_SELECTALWAYS, |
| flag_SELECTMAX |
| } FLAG_SELECTTYPE; |
| |
| /* State definitions for flag_SORTS */ |
| typedef enum { flag_SORTSMIN = -1, |
| flag_SORTSOFF = flag_OFF, |
| flag_SORTSMONADICWITHVARIABLE, |
| flag_SORTSMONADICALL, |
| flag_SORTSMAX |
| } FLAG_SORTSTYPE; |
| |
| /* State definitions for flag_SOS */ |
| typedef enum { flag_SOSMIN = -1, |
| flag_SOSOFF = flag_OFF, |
| flag_SOSON = flag_ON, |
| flag_SOSMAX |
| } FLAG_SOSTYPE; |
| |
| /* State definitions for flag_SPLITS */ |
| typedef enum { flag_SPLITSMIN = -2, |
| flag_SPLITSUNLIMITED, |
| flag_SPLITSOFF = flag_OFF, |
| flag_SPLITSMAX = INT_MAX |
| } FLAG_SPLITSTYPE; |
| |
| /* State definitions for flag_STDIN */ |
| typedef enum { flag_STDINMIN = -1, |
| flag_STDINOFF = flag_OFF, |
| flag_STDINON = flag_ON, |
| flag_STDINMAX |
| } FLAG_STDINTYPE; |
| |
| /* State definitions for flag_TDFG2OTTEROPTIONS */ |
| typedef enum { flag_TDFG2OTTEROPTIONSMIN = -1, |
| flag_TDFG2OTTEROPTIONSOFF = flag_OFF, |
| flag_TDFG2OTTEROPTIONSPROOFCHECK, |
| flag_TDFG2OTTEROPTIONSAUTO, |
| flag_TDFG2OTTEROPTIONSAUTO2, |
| flag_TDFG2OTTEROPTIONSMAX |
| } FLAG_TDFG2OTTEROPTIONSTYPE; |
| |
| /* State definitions for flag_TIMELIMIT */ |
| typedef enum { flag_TIMELIMITMIN = -2, |
| flag_TIMELIMITUNLIMITED, |
| flag_TIMELIMITMAX = INT_MAX |
| } FLAG_TIMELIMITTYPE; |
| |
| /* State definitions for flag_VARWEIGHT */ |
| typedef enum { flag_VARWEIGHTMIN = 0, |
| flag_VARWEIGHTMAX = INT_MAX |
| } FLAG_VARWEIGHTTYPE; |
| |
| /* State definitions for flag_WDRATIO */ |
| typedef enum { flag_WDRATIOMIN = 0, |
| flag_WDRATIOMAX = INT_MAX |
| } FLAG_WDRATIOTYPE; |
| |
| |
| /* Define all flags */ |
| |
| typedef enum { flag_AUTO, flag_STDIN, flag_INTERACTIVE, flag_FLOTTER, |
| flag_SOS, |
| |
| flag_SPLITS, flag_MEMORY, flag_TIMELIMIT, |
| flag_DOCSST, flag_DOCPROOF, |
| flag_DOCSPLIT, flag_LOOPS, flag_PSUB, |
| flag_PREW, flag_PCRW, flag_PCON, |
| flag_PTAUT, flag_POBV, flag_PSSI, |
| flag_PSST, flag_PMRR, flag_PUNC, |
| flag_PAED, |
| |
| flag_PDER, flag_PGIVEN, flag_PLABELS, |
| flag_PKEPT, flag_PPROBLEM, flag_PEMPTYCLAUSE, |
| flag_PSTATISTIC, flag_FPMODEL, flag_FPDFGPROOF, |
| flag_PFLAGS, flag_POPTSKOLEM, flag_PSTRSKOLEM, |
| flag_PBDC, flag_PBINC, |
| flag_PAPPLYDEFS, |
| |
| flag_SELECT, flag_RINPUT, flag_SORTS, |
| flag_SATINPUT, flag_WDRATIO, flag_PREFCON, |
| flag_FULLRED, |
| flag_FUNCWEIGHT, flag_VARWEIGHT, flag_PREFVAR, |
| flag_BOUNDMODE, flag_BOUNDSTART, |
| flag_BOUNDLOOPS, flag_APPLYDEFS, |
| |
| flag_ORD, |
| |
| flag_CNFOPTSKOLEM, flag_CNFSTRSKOLEM, flag_CNFPROOFSTEPS, |
| flag_CNFRENAMING, flag_CNFPRENAMING, flag_CNFFEQREDUCTIONS, |
| |
| flag_IEMS, flag_ISOR, |
| flag_IEQR, flag_IERR, |
| flag_IEQF, flag_IMPM, flag_ISPR, |
| flag_IOPM, flag_ISPM, |
| flag_ISPL, flag_IORE, flag_ISRE, |
| flag_ISHY, flag_IOHY, flag_IURR, |
| flag_IOFC, flag_ISFC, |
| flag_IUNR, flag_IBUR, flag_IDEF, |
| |
| flag_RFREW, flag_RBREW, |
| flag_RFCRW, flag_RBCRW, |
| flag_RFMRR, flag_RBMRR, |
| flag_ROBV, flag_RUNC, flag_RTER, |
| flag_RTAUT, flag_RSST, flag_RSSI, |
| flag_RFSUB, flag_RBSUB, flag_RAED, |
| flag_RCON, |
| |
| flag_TDFG2OTTEROPTIONS, |
| |
| flag_MAXFLAG } FLAG_ID; /* flag_MAXFLAG is a final Dummy */ |
| |
| |
| /* Define different flag types */ |
| typedef enum { flag_INFERENCE, |
| flag_PRINTING, |
| flag_REDUCTION, |
| flag_UNIQUE, /* miscellaneous flags */ |
| flag_MAXTYPE |
| } FLAG_TYPE; |
| |
| |
| /* Define the flag data type */ |
| typedef int FLAG; |
| |
| /* Define the internal representation of a flag store */ |
| typedef FLAG FLAGARRAY[flag_MAXFLAG]; |
| |
| /* Define the flag store */ |
| typedef FLAG *FLAGSTORE; |
| |
| /**************************************************************/ |
| /* Functions */ |
| /**************************************************************/ |
| |
| void flag_Init(void); |
| void flag_InitFlotterFlags(FLAGSTORE, FLAGSTORE); |
| void flag_InitFlotterSubproofFlags(FLAGSTORE, FLAGSTORE); |
| FLAGSTORE flag_DefaultStore(void); |
| void flag_Print(FLAGSTORE); |
| void flag_FPrint(FILE*, FLAGSTORE); |
| BOOL flag_Lookup(const char*); |
| FLAG_ID flag_Id(const char*); |
| const char* flag_Name(FLAG_ID); |
| int flag_Minimum(FLAG_ID); |
| int flag_Maximum(FLAG_ID); |
| FLAG_TYPE flag_Type(FLAG_ID Flag); |
| void flag_ClearInferenceRules(FLAGSTORE Store); |
| void flag_ClearReductionRules(FLAGSTORE Store); |
| void flag_ClearPrinting(FLAGSTORE Store); |
| void flag_SetReductionsToDefaults(FLAGSTORE Store); |
| void flag_CheckStore(FLAGSTORE Store); |
| |
| /**************************************************************/ |
| /* Macros */ |
| /**************************************************************/ |
| |
| static __inline__ void flag_CheckFlagIdInRange(FLAG_ID FlagId) |
| /* prints an error report if a FLAG_ID is not valid */ |
| { |
| #ifdef CHECK |
| if (FlagId >= flag_MAXFLAG) { |
| misc_StartErrorReport(); |
| misc_ErrorReport("\n In flag_CheckFlagIdInRange: Range of flags exceeded."); |
| misc_FinishErrorReport(); |
| } |
| #endif |
| } |
| |
| static __inline__ void flag_CheckFlagValueInRange(FLAG_ID FlagId, int Value) |
| /* prints an error report if a flag's value is out of range */ |
| { |
| flag_CheckFlagIdInRange(FlagId); |
| |
| if (Value <= flag_Minimum(FlagId)) { |
| misc_StartUserErrorReport(); |
| misc_UserErrorReport("\n Error: Flag value %d is too small for flag %s.\n", Value, flag_Name(FlagId)); |
| misc_FinishUserErrorReport(); |
| } |
| else |
| if (Value >= flag_Maximum(FlagId)) { |
| misc_StartUserErrorReport(); |
| misc_UserErrorReport("\n Error: Flag value %d is too large for flag %s.\n", Value, flag_Name(FlagId)); |
| misc_FinishUserErrorReport(); |
| } |
| } |
| |
| static __inline__ void flag_CheckFlagTypeInRange(FLAG_TYPE Type) |
| /* prints an error report if a flag's type is out of range */ |
| { |
| #ifdef CHECK |
| if (Type >= flag_MAXTYPE) { |
| misc_StartErrorReport(); |
| misc_ErrorReport("\n In flag_CheckFlagTypeInRange: Range of types exceeded."); |
| misc_FinishErrorReport(); |
| } |
| #endif |
| } |
| |
| static __inline__ BOOL flag_StoreIsDefaultStore(FLAGSTORE Store) |
| /* returns TRUE if a flag store is the default store, FALSE otherwise */ |
| { |
| return (BOOL) (Store == flag_DefaultStore()); |
| } |
| |
| static __inline__ int flag_GetFlagValue(FLAGSTORE Store, FLAG_ID FlagId) |
| { |
| int Value; |
| |
| flag_CheckFlagIdInRange(FlagId); |
| |
| Value = Store[FlagId]; |
| #ifdef CHECK |
| if (Value == flag_CLEAN) { |
| misc_StartErrorReport(); |
| misc_ErrorReport("\n In flag_GetFlagValue:"); |
| misc_ErrorReport(" Attempt to read undefined flag value."); |
| misc_FinishErrorReport(); |
| } |
| #endif |
| |
| return Value; |
| } |
| |
| static __inline__ void flag_SetFlagValue(FLAGSTORE Store, FLAG_ID FlagId, int Value) |
| { |
| #ifdef CHECK |
| if (flag_StoreIsDefaultStore(Store)) { |
| misc_StartErrorReport(); |
| misc_ErrorReport("\n In flag_SetFlagValue:"); |
| misc_ErrorReport(" Attempt to modify default flag value."); |
| misc_FinishErrorReport(); |
| } |
| #endif |
| |
| flag_CheckFlagIdInRange(FlagId); |
| |
| flag_CheckFlagValueInRange (FlagId, Value); |
| |
| Store[FlagId] = Value; |
| } |
| |
| static __inline__ BOOL flag_ValueIsClean(FLAGSTORE Store, FLAG_ID FlagId) |
| { |
| #ifdef CHECK |
| flag_CheckFlagIdInRange(FlagId); |
| return (BOOL) (Store[FlagId] == flag_CLEAN); |
| #else |
| return (BOOL) (flag_GetFlagValue(Store, FlagId) == flag_CLEAN); |
| #endif |
| } |
| |
| static __inline__ void flag_CleanStore(FLAGSTORE Store) |
| { |
| int i; |
| for (i = 0; i < flag_MAXFLAG; i++) |
| Store[i] = flag_CLEAN; |
| } |
| |
| |
| static __inline__ FLAGSTORE flag_CreateStore(void) |
| /* creates a fresh, clean FLAGSTORE */ |
| { |
| FLAGSTORE store; |
| |
| store = (FLAGSTORE) memory_Malloc(sizeof(FLAGARRAY)); |
| flag_CleanStore(store); |
| return store; |
| } |
| |
| |
| static __inline__ void flag_DeleteStore(FLAGSTORE Store) |
| { |
| #ifdef CHECK |
| /* Check if the flag store is a valid state */ |
| flag_CheckStore(Store); |
| #endif |
| |
| memory_Free(Store,sizeof(FLAGARRAY)); |
| } |
| |
| |
| static __inline__ void flag_InitStoreByDefaults(FLAGSTORE Store) |
| { |
| FLAG_ID i; |
| for (i = (FLAG_ID) 0; i < flag_MAXFLAG; i++) |
| flag_SetFlagValue(Store, i, flag_GetFlagValue(flag_DefaultStore(),i)); |
| } |
| |
| |
| static __inline__ void flag_SetFlagToDefault(FLAGSTORE Store, FLAG_ID Flag) |
| { |
| flag_SetFlagValue(Store, Flag, flag_GetFlagValue(flag_DefaultStore(), Flag)); |
| } |
| |
| |
| static __inline__ void flag_TransferFlag(FLAGSTORE Source, FLAGSTORE Destination, FLAG_ID FlagId) |
| { |
| flag_SetFlagValue(Destination, FlagId, flag_GetFlagValue(Source, FlagId)); |
| } |
| |
| |
| static __inline__ void flag_TransferAllFlags(FLAGSTORE Source, FLAGSTORE Destination) |
| { |
| FLAG_ID i; |
| for (i = (FLAG_ID) 0; i < flag_MAXFLAG; i++) |
| Destination[i] = Source[i]; |
| } |
| |
| |
| static __inline__ void flag_TransferSetFlags(FLAGSTORE Source, FLAGSTORE Destination) |
| { |
| FLAG_ID i; |
| for (i = (FLAG_ID) 0; i < flag_MAXFLAG; i++) |
| if (!flag_ValueIsClean(Source,i)) |
| flag_TransferFlag(Source, Destination, i); |
| } |
| |
| |
| static __inline__ BOOL flag_IsOfType(FLAG_ID Flag, FLAG_TYPE Type) |
| /************************************************************** |
| INPUT: A FlagId and a flag type. |
| RETURNS: TRUE is the flag is of given type, |
| FALSE otherwise. |
| ***************************************************************/ |
| { |
| flag_CheckFlagIdInRange(Flag); |
| flag_CheckFlagTypeInRange(Type); |
| |
| return (BOOL) (flag_Type(Flag) == Type); |
| } |
| |
| |
| static __inline__ BOOL flag_IsInference(FLAG_ID Flag) |
| /************************************************************** |
| INPUT: A FlagId. |
| RETURNS: TRUE is the flag is an inference flag, |
| FALSE otherwise. |
| ***************************************************************/ |
| { |
| flag_CheckFlagIdInRange(Flag); |
| |
| return flag_IsOfType(Flag, flag_INFERENCE); |
| } |
| |
| |
| static __inline__ BOOL flag_IsReduction(FLAG_ID Flag) |
| /************************************************************** |
| INPUT: A FlagId. |
| RETURNS: TRUE is the flag is a reduction flag, |
| FALSE otherwise. |
| ***************************************************************/ |
| { |
| flag_CheckFlagIdInRange(Flag); |
| |
| return flag_IsOfType(Flag, flag_REDUCTION); |
| } |
| |
| |
| static __inline__ BOOL flag_IsPrinting(FLAG_ID Flag) |
| /************************************************************** |
| INPUT: A FlagId. |
| RETURNS: TRUE is the flag is a printing flag, |
| FALSE otherwise. |
| ***************************************************************/ |
| { |
| flag_CheckFlagIdInRange(Flag); |
| |
| return flag_IsOfType(Flag, flag_PRINTING); |
| } |
| |
| |
| static __inline__ BOOL flag_IsUnique(FLAG_ID Flag) |
| /************************************************************** |
| INPUT: A FlagId. |
| RETURNS: TRUE is the flag is an unique flag, |
| FALSE otherwise. |
| ***************************************************************/ |
| { |
| flag_CheckFlagIdInRange(Flag); |
| |
| return flag_IsOfType(Flag, flag_UNIQUE); |
| } |
| |
| |
| static __inline__ void flag_PrintReductionRules(FLAGSTORE Store) |
| /************************************************************** |
| INPUT: A FlagStore. |
| RETURNS: Nothing. |
| EFFECT: Prints the values of all reduction flags to stdout. |
| ***************************************************************/ |
| { |
| FLAG_ID i; |
| fputs("\n Reductions: ", stdout); |
| |
| for (i = (FLAG_ID) 0; i < flag_MAXFLAG; i++) { |
| if (flag_IsReduction(i) && flag_GetFlagValue(Store, i)) |
| printf("%s=%d ",flag_Name(i), flag_GetFlagValue(Store, i)); |
| } |
| } |
| |
| static __inline__ void flag_PrintInferenceRules(FLAGSTORE Store) |
| /************************************************************** |
| INPUT: A FlagStore. |
| RETURNS: Nothing. |
| EFFECT: Prints the values of all inference flags to stdout. |
| ***************************************************************/ |
| { |
| FLAG_ID i; |
| fputs("\n Inferences: ", stdout); |
| |
| for (i = (FLAG_ID) 0; i < flag_MAXFLAG; i++) { |
| if (flag_IsInference(i) && flag_GetFlagValue(Store, i)) |
| printf("%s=%d ",flag_Name(i), flag_GetFlagValue(Store,i)); |
| } |
| } |
| |
| #endif |
| |
| |
| |
| |
| |
| |