]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/general-scheme.cc
* scm/define-event-classes.scm (lambda): use ly:is-listened-event-class
[lilypond.git] / lily / general-scheme.cc
index 3e1d23cf11ef79b224f1d28a5db1d2d87bf78ff2..5beda8355e9f5ec2940e8cbd0e5ecdc59b68bca4 100644 (file)
@@ -31,8 +31,8 @@ LY_DEFINE (ly_find_file, "ly:find-file",
 {
   SCM_ASSERT_TYPE (scm_is_string (name), name, SCM_ARG1, __FUNCTION__, "string");
 
-  std::string nm = ly_scm2string (name);
-  std::string file_name = global_path.find (nm);
+  string nm = ly_scm2string (name);
+  string file_name = global_path.find (nm);
   if (file_name.empty ())
     return SCM_BOOL_F;
 
@@ -56,7 +56,7 @@ LY_DEFINE (ly_gulp_file, "ly:gulp-file",
       sz = scm_to_int (size);
     }
   
-  std::string contents = gulp_file_to_string (ly_scm2string (name), true, sz);
+  string contents = gulp_file_to_string (ly_scm2string (name), true, sz);
   return scm_from_locale_stringn (contents.c_str (), contents.length ());
 }
 
@@ -224,7 +224,7 @@ LY_DEFINE (ly_output_formats, "ly:output-formats",
           "Formats passed to --format as a list of strings, "
           "used for the output.")
 {
-  std::vector<std::string> output_formats = split_string (output_format_global, ',');
+  vector<string> output_formats = string_split (output_format_global, ',');
 
   SCM lst = SCM_EOL;
   int output_formats_count = output_formats.size ();
@@ -307,3 +307,19 @@ LY_DEFINE (ly_stderr_redirect, "ly:stderr-redirect",
   freopen (ly_scm2newstr (file_name, 0), m, stderr);
   return SCM_UNSPECIFIED;
 }
+
+static SCM
+accumulate_symbol (void *closure, SCM key, SCM val, SCM result)
+{
+  (void) closure;
+  (void) val;
+  return scm_cons (key, result);
+}
+
+LY_DEFINE(ly_hash_table_keys, "ly:hash-table-keys",
+         1,0,0, (SCM tab),
+         "return a list of keys in @var{tab}")
+{
+  return scm_internal_hash_fold ((Hash_closure_function) & accumulate_symbol,
+                                NULL, SCM_EOL, tab);
+}