X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Flily-guile.hh;h=8a0a54a46db0c6094ea80c4cae35780e8471fc0e;hb=a276a19dc6bd57832db3107f2f2cbb04cb4677b6;hp=19a8dbd43ff62b1d969e2ea9bd93e08dfff6213e;hpb=8e79b6a256018e5d9b687e411d472711847ad90e;p=lilypond.git diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 19a8dbd43f..8a0a54a46d 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998--2006 Jan Nieuwenhuizen + (c) 1998--2007 Jan Nieuwenhuizen */ #ifndef LILY_GUILE_HH @@ -43,8 +43,11 @@ extern SCM global_lily_module; string gulp_file_to_string (string fn, bool must_exist, int size); +SCM ly_string2scm (string const &s); string ly_scm2string (SCM s); string ly_symbol2string (SCM); +Rational ly_scm2rational (SCM); +SCM ly_rational2scm (Rational); SCM ly_offset2scm (Offset); Offset ly_scm2offset (SCM); SCM ly_chain_assoc (SCM key, SCM achain); @@ -66,6 +69,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); @@ -80,11 +84,7 @@ SCM ly_hash2alist (SCM tab); SCM ly_hash_table_keys (SCM tab); int procedure_arity (SCM); -/* inserts at front, removing dublicates */ -inline SCM ly_assoc_front_x (SCM alist, SCM key, SCM val) -{ - return scm_acons (key, val, scm_assoc_remove_x (alist, key)); -} +SCM ly_assoc_prepend_x (SCM alist, SCM key, SCM val); inline bool ly_is_list (SCM x) { return SCM_NFALSEP (scm_list_p (x)); } inline bool ly_is_procedure (SCM x) { return SCM_NFALSEP (scm_procedure_p (x)); } inline bool ly_is_port (SCM x) { return SCM_NFALSEP (scm_port_p (x)); } @@ -96,10 +96,6 @@ inline bool ly_is_equal (SCM x, SCM y) inline bool ly_scm2bool (SCM x) { return SCM_NFALSEP (x); } inline char ly_scm2char (SCM x) { return SCM_CHAR (x); } -inline unsigned long ly_length (SCM x) -{ - return scm_num2ulong (scm_length (x), 0, "ly_length"); -} inline SCM ly_bool2scm (bool x) { return SCM_BOOL (x); } inline SCM ly_append2 (SCM x1, SCM x2) @@ -172,6 +168,10 @@ typedef SCM (*Scheme_function_2) (GUILE_ELLIPSIS); typedef SCM (*Scheme_function_3) (GUILE_ELLIPSIS); #endif + +/* + Inline these for performance reasons. + */ #define scm_cdr ly_cdr #define scm_car ly_car @@ -183,4 +183,23 @@ inline SCM ly_car (SCM x) { return SCM_CAR (x); } inline SCM ly_cdr (SCM x) { return SCM_CDR (x); } inline bool ly_is_pair (SCM x) { return SCM_I_CONSP (x); } + + +#include "std-vector.hh" + +template +SCM +ly_cxx_vector_to_list (vector const &src) +{ + SCM l = SCM_EOL; + for (vsize i = src.size (); i --; ) + l = scm_cons (src[i]->self_scm (), l); + + return l; +} + + +SCM ly_offsets2scm (vector os); +vector ly_scm2offsets (SCM s); + #endif /* LILY_GUILE_HH */