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
18sciff_option(fulfiller,off).
19
20sciff_option(fdet,off).
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)