File: setflags.pro

package info (click to toggle)
spark 2012.0.deb-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 29,260 kB
  • ctags: 3,098
  • sloc: ada: 186,243; cpp: 13,497; makefile: 685; yacc: 440; lex: 176; ansic: 119; sh: 16
file content (101 lines) | stat: -rw-r--r-- 4,275 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
% -----------------------------------------------------------------------------
%  (C) Altran Praxis Limited
% -----------------------------------------------------------------------------
% 
%  The SPARK toolset is free software; you can redistribute it and/or modify it
%  under terms of the GNU General Public License as published by the Free
%  Software Foundation; either version 3, or (at your option) any later
%  version. The SPARK toolset 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 distributed with the SPARK toolset; see file
%  COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
%  the license.
% 
% =============================================================================


/*** SET -- top-level predicate to set a flag to a particular value ***/
(set) :-
        (
           command_arg(flag, FLAG)
        ;
           prompt_user('Flag name? '),
           rread(FLAG)
        ),
        is_a_flag(FLAG, VALUETYPE),
        !,
        (
           command_arg(value, VALUE)
        ;
           prompt_user('New value? '),
           rread(VALUE)
        ),
        ok_value(VALUE, VALUETYPE),
        !,
        OLD =.. [FLAG, OLDVAL],                                 /* CFR045 */
        NEW =.. [FLAG, VALUE],
        !,
        retractall(OLD),
        asserta(NEW),
        !,
        (                                                       /* CFR045 */
           FLAG = command_logging,                              /* CFR045 */
           (                                                    /* CFR045 */
              VALUE = OLDVAL    /* so no change */              /* CFR045 */
           ;                                                    /* CFR045 */
              VALUE = off,                                      /* CFR045 */
              command_log_filename(CLG),                        /* CFR045 */
              tell(CLG),                                        /* CFR045 */
              told                                              /* CFR045 */
           ;                                                    /* CFR045 */
              VALUE = on,                                       /* CFR045 */
              command_log_filename(CLG),                        /* CFR045 */
              telling(NOW),                                     /* CFR045 */
              (
                 file_can_be_written(CLG)
              ;
                 \+ file_can_be_written(CLG),
                 write('Aborted: '),
                 print(CLG),
                 write(' cannot be written.'),
                 nl,
                 !,
                 halt
              ),
              tell(CLG),                                        /* CFR045 */
              write("set command_logging to on."),              /* CFR045 */
              nl,                                               /* CFR045 */
              telling(NOW),                                     /* CFR045 */
              tell(NOW)                                         /* CFR045 */
           )                                                    /* CFR045 */
        ;                                                       /* CFR045 */
           true                                                 /* CFR045 */
        ),                                                      /* CFR045 */
        !.


/*** SHOW -- top-level command to display current values of all flags ***/
show :-
        is_a_flag(FLAG, VALUETYPE),
        PREDICATE =.. [FLAG, VALUE],
        call(PREDICATE),
        print(FLAG),
        write(' := '),
        write_flag_value(VALUETYPE, VALUE),
        nl,
        fail.
show :- statistics, fail.
show.


write_flag_value(int_list/string, LIST) :-
        put_code(34), write_flag_string(LIST), put_code(34), !.
write_flag_value(_, VALUE) :- print(VALUE), !.


write_flag_string([H|T]) :- put_code(H), !, write_flag_string(T).
write_flag_string([]) :- !.
%###############################################################################
%END-OF-FILE