]> git.donarmstrong.com Git - lilypond.git/blob - lily/lily-guile.cc
release: 1.1.13
[lilypond.git] / lily / lily-guile.cc
1 /*
2   lily-guile.cc -- implement assorted guile functions
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
7
8   Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 */
10
11 #include <stdio.h>
12 #include "libc-extension.hh"
13 #include "lily-guile.hh"
14 #include "main.hh"
15 #include "simple-file-storage.hh"
16 #include "file-path.hh"
17 #include "debug.hh"
18
19
20 /*
21   scm_m_quote doesn't use any env, but needs one for a good signature in GUILE.
22
23   Why there is no gh_quote () in GUILE  beats me.
24 */
25
26 SCM
27 ly_quote_scm (SCM s)
28 {
29   return scm_cons2 (scm_i_quote, s, SCM_EOL);
30 }
31
32 /*
33   See: libguile/symbols.c
34
35   SCM
36   scm_string_to_symbol(s)
37   
38 */
39 SCM
40 ly_symbol (String name)
41 {
42   return gh_car (scm_intern (name.ch_C(), name.length_i()));
43 }
44
45 SCM
46 ly_set_scm (String name , SCM val)
47 {
48   return scm_sysintern (name.ch_C(), val);
49   
50 }
51 /**
52
53    Read a file, and shove it down GUILE.  GUILE also has file read
54    functions, but you can't fiddle with the path of those.
55    
56  */
57 void
58 read_lily_scm_file (String fn)
59 {
60   String s = global_path.find (fn);
61   if (s == "")
62     {
63       String e = _f ("Can not find file `%s\'", fn);
64       e += " ";
65       e += _f ("(Load path is `%s\'", global_path.str ());
66       error (e);
67     }
68   else
69     *mlog << '[' << s;
70
71
72   Simple_file_storage f(s);
73   
74   gh_eval_str ((char *) f.ch_C());
75   *mlog << ']' << flush;  
76 }
77