:-module(sciff_options, [get_option/2, set_option/2, sciff_option/2, set_options/1, show_options/0, available_option/1]). :- dynamic(sciff_option/2). %---------------------------------------------------------- % ALL OPTIONS %---------------------------------------------------------- sciff_option(fulfiller,off). sciff_option(fdet,off). %sciff_option(fdet,on). sciff_option(seq_act,off). sciff_option(factoring,off). sciff_option(sciff_debug, on). sciff_option(violation_causes_failure, yes). sciff_option(graphviz, off). sciff_option(allow_events_not_expected, yes). sciff_option(portray_ic,on). sciff_option(print_quant,off). available_option(fulfiller). available_option(fdet). available_option(seq_act). available_option(factoring). available_option(sciff_debug). available_option(violation_causes_failure). available_option(graphviz). available_option(allow_events_not_expected). available_option(portray_ic). available_option(print_quant). available_option(coloring). get_option(O,V):- sciff_option(O,V). set_option(Option,Value):- (sciff_option(Option,OldVal) -> retract(sciff_option(Option,OldVal)), assert(sciff_option(Option,Value)) ; (available_option(Option) -> assert(sciff_option(Option,Value)) ; (is_dialect(swi) -> atom_concat('SCIFF Unknown option ',Option,Message), throw(error(_,context(set_option/2,Message))) ; throw(type_error(set_option(Option,Value), 1, available_option, Option)) ) ) ). show_options :- findall(sciff_option(Option, Value), sciff_option(Option, Value), ListOption), print_options(ListOption). print_options([]) :- nl, nl. print_options([sciff_option(Option, Value)| T]) :- write(Option), write(' is '), write(Value), write('.'), nl, print_options(T). set_options([]). set_options([[O,V]|T]):- set_option(O,V), set_options(T).