]> git.donarmstrong.com Git - lilypond.git/commitdiff
(LY_DEFINE): move
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 14 Oct 2006 23:47:03 +0000 (23:47 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 14 Oct 2006 23:47:03 +0000 (23:47 +0000)
ly_camel_case_to_lisp_identifier to here. Use vector<char> iso. char[]

ChangeLog
lily/general-scheme.cc
lily/music-scheme.cc

index 6e3e17f7cce6b8ce441abb6a9eb3685695a73d7b..5b48a3c217140bc4e50480699af58186cd557af6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-10-15  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
+       * lily/general-scheme.cc (LY_DEFINE): move
+       ly_camel_case_to_lisp_identifier to here. Use vector<char> iso. char[] 
+
        * Documentation/topdocs/NEWS.tely (Top): add note for
        string-finger feature.
 
index 6b96729d42e695fa23243a996e20be3aa1b8646d..2ede20deb1eee6dc82d6bec8dd98f5108671bcf5 100644 (file)
@@ -323,3 +323,32 @@ LY_DEFINE(ly_hash_table_keys, "ly:hash-table-keys",
   return scm_internal_hash_fold ((Hash_closure_function) & accumulate_symbol,
                                 NULL, SCM_EOL, tab);
 }
+
+LY_DEFINE (ly_camel_case_to_lisp_identifier, "ly:camel-case->lisp-identifier",
+          1, 0, 0, (SCM name_sym),
+          "Convert FooBar to foo-bar style symbol.")
+{
+  SCM_ASSERT_TYPE(scm_is_symbol (name_sym), name_sym,
+                 SCM_ARG1, __FUNCTION__, "symbol");
+  
+  /*
+    TODO: should use strings instead?
+  */
+  
+  const string in = ly_symbol2string (name_sym);
+  
+  vector<char>  out;
+
+  /* don't add '-' before first character */
+  out.push_back (tolower (in[0]));
+    
+  for (size_t inpos = 1; inpos < in.size (); inpos++)
+    {
+      if (isupper (in[inpos]))
+       out.push_back ('-');
+      out.push_back (tolower (in[inpos]));
+    }
+
+  string result (&out[0], out.size ());
+  return ly_symbol2scm (result.c_str ());
+}
index dfe4f47c16bab291286ee65c06021d4b7cb67247..27e5db98804752020a1460fb1cff339eac7f1398 100644 (file)
@@ -215,27 +215,3 @@ LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist",
   return scm_reverse_x (newlist, SCM_EOL);
 }
 
-/*
-  TODO: does this belong here?
-*/
-LY_DEFINE (ly_camel_case_to_lisp_identifier, "ly:camel-case->lisp-identifier",
-          1, 0, 0, (SCM name_sym),
-          "Convert music name to corresponding event class name.")
-{
-  /* UGH. There should be a better way. */
-  const string in = ly_symbol2string (name_sym);
-  /* this should be sufficient */
-  char out[in.size() * 2 + 2];
-  /* don't add '-' before first character */
-  out[0] = tolower (in[0]);
-  size_t outpos = 1;
-  for (size_t inpos = 1; inpos < in.size (); inpos++)
-    {
-      if (isupper (in[inpos]))
-       out[outpos++] = '-';
-      out[outpos++] = tolower (in[inpos]);      
-    }
-  out[outpos] = 0;
-
-  return ly_symbol2scm (out);
-}