1:-module(sciff_options,
    2     [get_option/2,
    3      set_option/2,
    4      sciff_option/2,
    5      set_options/1,
    6      show_options/0,
    7      available_option/1]).    8
    9
   10:- dynamic(sciff_option/2).   11
   12
   13
   14
   15%----------------------------------------------------------
   16% ALL OPTIONS
   17%----------------------------------------------------------
   18sciff_option(fulfiller,off).
   19
   20sciff_option(fdet,off).
   21%sciff_option(fdet,on).
   22
   23sciff_option(seq_act,off).
   24
   25sciff_option(factoring,off).
   26
   27sciff_option(sciff_debug, on).
   28
   29sciff_option(violation_causes_failure, yes).
   30
   31sciff_option(graphviz, off).
   32
   33sciff_option(allow_events_not_expected, yes).
   34
   35sciff_option(portray_ic,on).
   36
   37sciff_option(print_quant,off).
   38
   39available_option(fulfiller).
   40available_option(fdet).
   41available_option(seq_act).
   42available_option(factoring).
   43available_option(sciff_debug).
   44available_option(violation_causes_failure).
   45available_option(graphviz).
   46available_option(allow_events_not_expected).
   47available_option(portray_ic).
   48available_option(print_quant).
   49available_option(coloring).
   50
   51
   52get_option(O,V):-
   53    sciff_option(O,V).
   54
   55set_option(Option,Value):-
   56    (sciff_option(Option,OldVal)
   57     -> retract(sciff_option(Option,OldVal)),
   58        assert(sciff_option(Option,Value))
   59     ;  (available_option(Option)
   60            ->  assert(sciff_option(Option,Value))
   61            ;   (is_dialect(swi)
   62                ->  atom_concat('SCIFF Unknown option ',Option,Message),
   63                    throw(error(_,context(set_option/2,Message)))
   64                ;   throw(type_error(set_option(Option,Value), 1, available_option, Option))
   65                )
   66        )
   67    ).
   68
   69show_options :-
   70	findall(sciff_option(Option, Value), sciff_option(Option, Value), ListOption),
   71	print_options(ListOption).
   72print_options([]) :- nl, nl.
   73print_options([sciff_option(Option, Value)| T]) :-
   74	write(Option),
   75	write(' is '),
   76	write(Value),
   77	write('.'), nl,
   78	print_options(T).
   79
   80set_options([]).
   81set_options([[O,V]|T]):-
   82    set_option(O,V),
   83    set_options(T)