2 input-smob.cc -- implement Input smob
4 source file of the GNU LilyPond music typesetter
6 (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "input-smob.hh"
13 #include "ly-smobs.icc"
15 static long input_tag
;
24 print_smob (SCM s
, SCM port
, scm_print_state
*)
26 String str
= "#<location " + unsmob_input (s
)->location_str () + ">";
27 scm_puts (str
.ch_C (), port
);
34 delete unsmob_input (s
);
41 return unsmob_input (x
) ? SCM_BOOL_T
: SCM_BOOL_F
;
45 void start_input_smobs ()
47 input_tag
= scm_make_smob_type ("input", 0);
48 scm_set_smob_mark (input_tag
, mark_smob
);
49 scm_set_smob_free (input_tag
, free_smob
);
50 scm_set_smob_print (input_tag
, print_smob
);
51 scm_set_smob_equalp (input_tag
, 0);
53 scm_c_define_gsubr ("ly-input-location?", 1, 0, 0,
54 (Scheme_function_unknown
)ly_input_p
);
60 Input
* nip
= new Input (ip
);
64 SCM_SETCAR (z
, (SCM
)input_tag
);
65 SCM_SETCDR (z
, (SCM
)nip
);
75 if (SCM_CAR (s
) == (SCM
)input_tag
) // ugh.
76 return (Input
*) SCM_CDR (s
);
82 ADD_SCM_INIT_FUNC (input
, start_input_smobs
);
85 Input dummy_input_global
;