]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/lily-guile.hh
2003 -> 2004
[lilypond.git] / lily / include / lily-guile.hh
index e447afb5b1b356f5e638055db73a2fbabf2f0e70..c56177af8b6b80acf3e0363641adb62da82d8dad 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--2002 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef LILY_GUILE_HH
@@ -37,6 +37,7 @@
 
 #include "drul-array.hh"
 
+
 /* Guile 1.4.x compatibility */
 #if GUILE_MINOR_VERSION < 5
 
@@ -80,6 +81,9 @@ inline SCM scm_c_make_vector  (int k, SCM val) {
 #if GUILE_MINOR_VERSION < 7
 #define scm_gc_unregister_collectable_memory(a,b,c) scm_done_free(b)
 #define scm_gc_register_collectable_memory(a,b,c) scm_done_malloc(b)
+#define SCM_VECTOR_REF(v,i) (SCM_VELTS((v))[(i)])
+
+
 #endif
 
 #include "direction.hh"
@@ -152,10 +156,15 @@ Offset ly_scm2offset (SCM);
 SCM ly_assoc_chain (SCM key, SCM achain);
 SCM ly_assoc_cdr (SCM key, SCM alist);
 Interval ly_scm2interval (SCM);
+Drul_array<Real> ly_scm2realdrul (SCM);
 Slice int_list_to_slice (SCM l);
 SCM ly_interval2scm (Drul_array<Real>);
 
-
+Real robust_scm2double (SCM, double);
+int robust_scm2int (SCM, int);
+Drul_array<Real> robust_scm2drul (SCM, Drul_array<Real>);
+Interval robust_scm2interval (SCM, Drul_array<Real>);
+Offset robust_scm2offset (SCM, Offset);
 
 SCM ly_quote_scm (SCM s);
 bool type_check_assignment (SCM val, SCM sym,  SCM type_symbol) ;
@@ -164,7 +173,7 @@ SCM ly_number2string (SCM s);
 
 SCM parse_symbol_list (char const *);
 SCM robust_list_ref(int i, SCM l);
-
+SCM alist_to_hashq (SCM);
 
 inline SCM ly_cdr (SCM x) { return SCM_CDR (x); }
 inline SCM ly_car (SCM x) { return SCM_CAR (x); } 
@@ -202,9 +211,9 @@ void ly_display_scm (SCM s);
 void read_lily_scm_file (String);
 void ly_init_guile ();
 
-bool ly_dir_p (SCM s);
-bool ly_number_pair_p (SCM);
-bool ly_axis_p (SCM);
+bool is_direction (SCM s);
+bool is_number_pair (SCM);
+bool is_axis (SCM);
 
 /*
   these conversion functions also do a typecheck on the argument, and
@@ -220,18 +229,20 @@ unsigned int ly_scm_hash (SCM s);
 SCM index_get_cell (SCM cell, Direction d);
 SCM index_set_cell (SCM cell, Direction d, SCM val);
 
-
-
 SCM ly_snoc (SCM s, SCM list);
 SCM ly_split_list (SCM s, SCM list);
 SCM ly_unique (SCM list);
+
+
+
 /*
   snarfing.
  */
 void add_scm_init_func (void (*) ());
 
-
+extern "C" {
 typedef SCM (*Scheme_function_unknown) ();
+}
 
 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
 typedef SCM (*Scheme_function_0) ();
@@ -256,12 +267,13 @@ TYPE ## _ ## FUNC ## _init_functions ()                                   \
 {                                                              \
   TYPE :: FUNC ## _proc = gh_new_procedure ## ARGCOUNT  ## _0 (#TYPE "::" #FUNC, \
  ((Scheme_function_ ## ARGCOUNT)TYPE :: FUNC));                                \
+  scm_c_export (#TYPE "::" #FUNC, NULL);\
 }                                                              \
                                                                \
 ADD_SCM_INIT_FUNC (TYPE ## _ ## FUNC ## _callback, TYPE ## _ ## FUNC ## _init_functions);      \
 
 
-void ly_add_function_documentation (char const * fname,
+void ly_add_function_documentation (SCM proc, char const * fname,
                                    char const * varlist,
                                    char const * doc);
 
@@ -282,7 +294,8 @@ INITPREFIX ## init ()\
 {\
  FNAME ## _proc \
     = scm_c_define_gsubr (PRIMNAME,REQ, OPT, VAR, (Scheme_function_unknown) FNAME);\
-  ly_add_function_documentation (PRIMNAME, #ARGLIST,  DOCSTRING);\
+  ly_add_function_documentation ( FNAME ## _proc ,PRIMNAME, #ARGLIST,  DOCSTRING);\
+  scm_c_export (PRIMNAME,NULL);\
 }\
 ADD_SCM_INIT_FUNC (INITPREFIX ## init_unique_prefix, INITPREFIX ## init);\
 SCM \