/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "pitch.hh"
/**
- State for the parser. Do not ever add any variables to parse
- musical content here. We still have to remove default_duration_.
+ State for the parser.
TODO: interface is too complicated
*/
-class Lily_parser
+class Lily_parser : public Smob<Lily_parser>
{
- DECLARE_SMOBS (Lily_parser);
-
- char const *here_str0 () const;
- Simultaneous_music *get_chord (Pitch tonic,
- vector<Pitch> *adds, vector<Pitch> *subs,
- Pitch *inversion, Pitch *bass, Duration d);
- void set_chord_tremolo (int type);
- void set_last_duration (Duration const *);
- void set_last_pitch (Pitch const *);
-
+ SCM do_yyparse ();
+ static SCM do_yyparse_trampoline (void *parser);
public:
+ int print_smob (SCM, scm_print_state *) const;
+ SCM mark_smob () const;
+ static const char type_p_name_[];
+ virtual ~Lily_parser ();
Lily_lexer *lexer_;
Sources *sources_;
Duration default_duration_;
+ int default_tremolo_type_;
string output_basename_;
SCM closures_;
void clear ();
void do_init_file ();
- SCM do_yyparse ();
void include_string (const string &ly_code);
void parse_file (const string &init, const string &name, const string &out_name);
void parse_string (const string &ly_code);
SCM make_scope () const;
};
-DECLARE_UNSMOB (Lily_parser, lily_parser);
Output_def *get_layout (Lily_parser *parser);
Output_def *get_midi (Lily_parser *parser);