+IMPLEMENT_SMOBS (Paper_outputter);
+IMPLEMENT_DEFAULT_EQUAL_P (Paper_outputter);
+
+SCM
+Paper_outputter::mark_smob (SCM x)
+{
+ Paper_outputter *p = (Paper_outputter *) SCM_CELL_WORD_1 (x);
+ scm_gc_mark (p->output_module_);
+ return p->file_;
+}
+
+int
+Paper_outputter::print_smob (SCM x, SCM p, scm_print_state*)
+{
+ (void) x;
+ scm_puts ("#<Paper_outputter>", p);
+ return 1;
+}
+
+SCM
+Paper_outputter::file () const
+{
+ return file_;
+}
+
+SCM
+Paper_outputter::dump_string (SCM scm)
+{
+ return scm_display (scm, file ());
+}
+
+SCM
+Paper_outputter::scheme_to_string (SCM scm)
+{
+ return scm_eval (scm, output_module_);
+}
+
+void
+Paper_outputter::output_scheme (SCM scm)
+{
+ dump_string (scheme_to_string (scm));
+}
+