2 lily-guile.cc -- implement assorted guile functions
4 source file of the GNU LilyPond music typesetter
6 (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
8 Han-Wen Nienhuys <hanwen@cs.uu.nl>
12 #include "libc-extension.hh"
13 #include "lily-guile.hh"
15 #include "simple-file-storage.hh"
16 #include "file-path.hh"
19 ly_append (SCM a, SCM b)
21 return gh_call2 (gh_eval_str ("append"), a, b);
27 return gh_list (a, SCM_UNDEFINED);
33 return gh_eval_str ("'quote");
39 return gh_list (ly_quote (), s, SCM_UNDEFINED);
45 return gh_call1 (gh_eval_str ("eval"), a);
51 return gh_eval_str ("'(lambda (o))");
55 ly_func_o (char const* name)
57 char buf[200]; // ugh.
58 snprintf (buf, 200, "'(%s o)", name);
59 return gh_eval_str (buf);
64 lambda_scm (String str, Array<int> args_arr)
71 SCM args_scm = SCM_EOL;
72 for (int i = args_arr.size () - 1; i >= 0; i--)
73 args_scm = gh_cons (gh_int2scm (args_arr[i]), args_scm);
75 ly_append (ly_lambda_o (),
76 ly_list1 (ly_append (ly_func_o (str.ch_l ()), args_scm)));
81 lambda_scm (String str, Array<Scalar> args_arr)
88 SCM args_scm = SCM_EOL;
89 for (int i = args_arr.size () - 1; i >= 0; i--)
90 args_scm = gh_cons (gh_str02scm (args_arr[i].ch_l ()), args_scm);
92 ly_append (ly_lambda_o (),
93 ly_list1 (ly_append (ly_func_o (str.ch_l ()), args_scm)));
98 lambda_scm (String str, Array<Real> args_arr)
105 SCM args_scm = SCM_EOL;
106 for (int i = args_arr.size (); i--; )
107 args_scm = gh_cons (gh_double2scm (args_arr[i]), args_scm);
110 ly_append (ly_lambda_o (),
111 ly_list1 (ly_append (ly_func_o (str.ch_l ()), args_scm)));
118 read_lily_scm_file (String fn)
120 String s = global_path.find (fn);
121 Simple_file_storage f(s);
123 gh_eval_str (f.ch_C());