]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ly-module.cc
(DECLARE_BASE_SMOBS): add methods
[lilypond.git] / lily / ly-module.cc
index e3b876967f7aaa5bc1200c5b624b837ef2b931a5..7d613fcdd8ad87251ff29bacb433f05c515026c3 100644 (file)
 
 #define FUNC_NAME __FUNCTION__
 
-static int module_count;
-
-void
-ly_init_anonymous_module (void *data)
-{
-  (void) data;
-}
-
 SCM
 ly_make_anonymous_module (bool safe)
 {
   SCM mod = SCM_EOL;
   if (!safe)
     {
-      String s = "*anonymous-ly-" + to_string (module_count++) + "*";
-      mod = scm_c_define_module (s.to_str0 (), ly_init_anonymous_module, 0);
+      SCM maker = ly_lily_module_constant ("make-module");
+
+      SCM scm_module = ly_lily_module_constant ("the-scm-module");
+      
+      mod = scm_call_0 (maker);
+      scm_module_define (mod, ly_symbol2scm ("%module-public-interface"),
+                        mod);
+      
+      ly_use_module (mod, scm_module);
       ly_use_module (mod, global_lily_module);
     }
   else
@@ -75,7 +74,7 @@ LY_DEFINE (ly_module_copy, "ly:module-copy",
           "Copy all bindings from module SRC into DEST.")
 {
   SCM_VALIDATE_MODULE (1, src);
-  scm_internal_hash_fold ((Hash_cl_func) &module_define_closure_func,
+  scm_internal_hash_fold ((Hash_cl_func) & module_define_closure_func,
                          (void *) dest,
                          SCM_EOL, SCM_MODULE_OBARRAY (src));
   return SCM_UNSPECIFIED;
@@ -95,7 +94,7 @@ ly_module_symbols (SCM mod)
   SCM_VALIDATE_MODULE (1, mod);
 
   SCM obarr = SCM_MODULE_OBARRAY (mod);
-  return scm_internal_hash_fold ((Hash_cl_func) &accumulate_symbol,
+  return scm_internal_hash_fold ((Hash_cl_func) & accumulate_symbol,
                                 NULL, SCM_EOL, obarr);
 }
 
@@ -104,14 +103,9 @@ entry_to_alist (void *closure, SCM key, SCM val, SCM result)
 {
   (void) closure;
   if (scm_variable_bound_p (val) == SCM_BOOL_T)
-    {
-      return scm_cons (scm_cons (key, scm_variable_ref (val)), result);
-    }
-  else
-    {
-      programming_error ("Unbound variable in module.");
-      return result;
-    }
+    return scm_cons (scm_cons (key, scm_variable_ref (val)), result);
+  programming_error ("unbound variable in module");
+  return result;
 }
 
 LY_DEFINE (ly_module2alist, "ly:module->alist",
@@ -121,7 +115,7 @@ LY_DEFINE (ly_module2alist, "ly:module->alist",
   SCM_VALIDATE_MODULE (1, mod);
   SCM obarr = SCM_MODULE_OBARRAY (mod);
 
-  return scm_internal_hash_fold ((Hash_cl_func) &entry_to_alist, NULL, SCM_EOL, obarr);
+  return scm_internal_hash_fold ((Hash_cl_func) & entry_to_alist, NULL, SCM_EOL, obarr);
 }
 
 /* Lookup SYM, but don't give error when it is not defined.  */