From: Han-Wen Nienhuys Date: Wed, 29 Nov 2006 20:31:28 +0000 (+0100) Subject: offsets <-> scm conversion routines X-Git-Tag: release/2.11.1-1~35 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=08b689db5cbff3a66944ac706668d9b73b9e5f6e;p=lilypond.git offsets <-> scm conversion routines --- diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 3422089e9c..621849edc6 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -66,6 +66,7 @@ Interval robust_scm2interval (SCM, Drul_array); Offset robust_scm2offset (SCM, Offset); string robust_scm2string (SCM, string); + SCM ly_quote_scm (SCM s); bool type_check_assignment (SCM val, SCM sym, SCM type_symbol); string print_scm_val (SCM val); @@ -195,4 +196,7 @@ ly_cxx_vector_to_list (vector const &src) } +SCM ly_offsets2scm (vector os); +vector ly_scm2offsets (SCM s); + #endif /* LILY_GUILE_HH */ diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 4c23b2ad40..d57a9f5730 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -303,6 +303,28 @@ ly_scm2offset (SCM s) scm_to_double (scm_cdr (s))); } +SCM +ly_offsets2scm (vector os) +{ + SCM l = SCM_EOL; + SCM *tail = &l; + for (vsize i = 0; i < os.size (); i++) + { + *tail = scm_cons (ly_offset2scm (os[i]), SCM_EOL); + tail = SCM_CDRLOC(*tail); + } + return l; +} + +vector +ly_scm2offsets (SCM s) +{ + vector os; + for (; scm_is_pair (s); s = scm_cdr (s)) + os.push_back (ly_scm2offset (scm_car (s))); + return os; +} + SCM ly_deep_copy (SCM src) {