2005-04-10 16:30:47 +01:00
# ifndef SWITCHES
# define SWITCHES
2005-06-07 16:02:27 +01:00
# include "term.h"
# include "system.h"
void switchesInit ( ) ;
void switchesDone ( ) ;
//! Command-line switches structure
struct switchdata
{
// Command-line
int argc ;
char * * argv ;
// Methods
int engine ; //!< Engine type (POR_ENGINE,ARACHNE_ENGINE)
int match ; //!< Matching type.
int clp ; //!< Do we use clp?
2005-08-12 13:59:25 +01:00
int tupling ; //!< Tupling is by default 0: right-associative, optionally 1: left-associative.
2005-06-07 16:02:27 +01:00
// Pruning and Bounding
int prune ; //!< Type of pruning.
int maxproofdepth ; //!< Maximum proof depth
int maxtracelength ; //!< Maximum trace length allowed
int runs ; //!< The number of runs as in the switch
Term filterClaim ; //!< Which claim should be checked?
2005-08-15 13:49:32 +01:00
int maxAttacks ; //!< When not 0, maximum number of attacks
2005-06-07 16:02:27 +01:00
// Modelchecker
int traverse ; //!< Traversal method
int forceChoose ; //!< Force chooses for each run, even if involved in first read
int chooseFirst ; //!< Priority to chooses, implicit and explicit
int readSymmetries ; //!< Enable read symmetry reduction
int agentSymmetries ; //!< Enable agent symmetry reduction
int orderSymmetries ; //!< Enable symmetry order reduction
int pruneNomoreClaims ; //!< Enable no more claims cutter
int reduceEndgame ; //!< Enable endgame cutter
int reduceClaims ; //!< Symmetry reduction on claims (only works when switchAgentSymm is true)
// Parallellism
int scenario ; //!< -1 to count, 0 for disable, 1-n to select the choose scenario
int scenarioSize ; //!< Scenario size, also called fixed trace prefix length
// Arachne
2006-02-23 15:03:43 +00:00
int heuristic ; //!< Goal selection method for Arachne engine
2005-08-21 22:38:32 +01:00
int maxIntruderActions ; //!< Maximum number of intruder actions in the semitrace (encrypt/decrypt)
2005-10-08 20:54:30 +01:00
int agentTypecheck ; //!< Check type of agent variables in all matching modes
2005-11-12 21:13:00 +00:00
int concrete ; //!< Swap out variables at the end.
2005-11-29 09:15:16 +00:00
int extravert ; //!< Disallow Alice talking to Alice
2005-12-21 19:02:41 +00:00
int intruder ; //!< Enable intruder actions (default)
2005-06-07 16:02:27 +01:00
// Misc
int switchP ; //!< A multi-purpose integer parameter, passed to the partial order reduction method selected.
2005-10-07 14:09:07 +01:00
int experimental ; //!< Experimental stuff goes here until it moves into main stuff.
2005-12-27 13:53:49 +00:00
int removeclaims ; //!< Remove any claims in the spdl file
2005-12-28 11:50:17 +00:00
int addreachableclaim ; //!< Adds 'reachable' claims to each role
int addallclaims ; //!< Adds all sorts of claims to the roles
2005-12-29 12:52:51 +00:00
int check ; //!< Check protocol correctness
2006-02-22 08:41:06 +00:00
int expert ; //!< Expert mode
2005-06-07 16:02:27 +01:00
// Output
int output ; //!< From enum outputs: what should be produced. Default ATTACK.
int report ;
int reportClaims ; //!< Enable claims report
int xml ; //!< xml output
int human ; //!< human readable
int reportMemory ; //!< Memory display switch.
int reportTime ; //!< Time display switch.
int reportStates ; //!< Progress display switch. (traversed states)
2006-02-22 08:24:29 +00:00
int countStates ; //!< Count states
2005-06-21 12:04:34 +01:00
int extendNonReads ; //!< Show further events in arachne xml output.
2005-08-12 13:13:50 +01:00
int extendTrivial ; //!< Show further events in arachne xml output, based on knowledge underapproximation. (Includes at least the events of the nonreads extension)
2005-12-28 18:40:58 +00:00
int plain ; //!< Disable color output
2005-06-21 12:04:34 +01:00
2005-06-07 16:02:27 +01:00
//! Latex output switch.
/**
* Obsolete . Use globalLatex instead .
* \ sa globalLatex
*/
int latex ;
} ;
2006-01-02 21:06:08 +00:00
extern struct switchdata switches ; //!< pointer to switchdata structure
2005-04-10 16:30:47 +01:00
# endif