]> git.donarmstrong.com Git - lilypond.git/blob - lily/scm-option.cc
duh.
[lilypond.git] / lily / scm-option.cc
1 /*   
2   scm-option.cc --  implement option setting from Scheme
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2001--2002  Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #include <iostream.h>
11
12 #include "string.hh"
13 #include "lily-guile.hh"
14 #include "scm-option.hh"
15 #include "warn.hh"
16
17 /*
18   This interface to option setting is meant for setting options are
19   useful to a limited audience. The reason for this interface is that
20   making command line options clutters up the command-line option name
21   space.
22
23
24   preferably, also dont use TESTING_LEVEL_GLOBAL, since it defeats
25   another purpose of this very versatile interface, which is to
26   support multiple debug/testing options concurrently.
27   
28  */
29
30
31 /* Write midi as formatted ascii stream? */
32 bool midi_debug_global_b;
33
34 /* General purpose testing flag */
35 int testing_level_global;
36
37 /*
38   crash if internally the wrong type is used for a grob property.
39  */
40 bool internal_type_checking_global_b;
41
42 /*
43
44 add these as well:
45
46 @item -T,--no-timestamps
47 don't timestamp the output
48
49 @item -t,--test
50 Switch on any experimental features.  Not for general public use.
51
52  */
53
54 SCM
55 set_lily_option (SCM var, SCM val)
56 {
57   /*
58     Scheme option usage:
59     lilypond -e "(set-lily-option 'help 0)"
60    */
61   if (var == ly_symbol2scm ("help"))
62     {
63       cout << _("lilypond -e EXPR means
64
65 evalute EXPR as Scheme after init.scm has been read.  In particular,
66 the function set-lily-option allows for access to some internal
67 variables. Usage:
68
69   (set-lily-option SYMBOL VAL)
70
71 possible options for SYMBOL are :
72 ").ch_C()<<endl;
73       
74       cout << "  help (any-symbol)"<<endl; 
75       cout << "  internal-type-checking (boolean)"<<endl; 
76       cout << "  midi-debug (boolean)"<<endl; 
77       cout << "  testing-level (int)"<<endl; 
78
79       exit (0);
80     }
81   else if (var == ly_symbol2scm ("midi-debug"))
82     {
83       midi_debug_global_b = to_boolean (val);
84     }
85   else if (var == ly_symbol2scm ("testing-level"))
86     {
87      testing_level_global = gh_scm2int (val); 
88     }
89   else if (var == ly_symbol2scm ("internal-type-checking"))
90     {
91      internal_type_checking_global_b = to_boolean (val); 
92     }
93   else if (var == ly_symbol2scm ("find-old-relative"))
94     {
95       /*
96         Seems to have been broken for some time!
97         
98         @item  -Q,--find-old-relative
99         show all changes needed to convert a file to  relative octave syntax.
100
101
102         
103       */
104
105       ;
106     }
107   else
108     {
109       warning (_("Unknown internal option!"));
110     }
111   
112
113   return SCM_UNSPECIFIED;
114 }
115
116
117 static void
118 init_functions ()
119 {
120   scm_c_define_gsubr ("set-lily-option", 2, 0, 0, (Scheme_function_unknown)set_lily_option);
121 }
122
123
124 ADD_SCM_INIT_FUNC (init_functions_sopt, init_functions);
125
126