X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmy-lily-parser.cc;h=b081bcf6eb0a0cbc02eba38476f58f1448e92e04;hb=ee513a2f7d18fc8d43e1c291350ed81856b0192d;hp=11ae2eeda45ac03929a2b17894f45bf7b3e8e4c8;hpb=3a0e9efb7f067e5b334ba0596b95e15d96d7cc49;p=lilypond.git diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 11ae2eeda4..b081bcf6eb 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2000 Han-Wen Nienhuys Jan Nieuwenhuizen */ @@ -28,9 +28,8 @@ My_lily_parser::My_lily_parser (Sources * source_l) first_b_ = true; source_l_ = source_l; lexer_p_ = 0; - abbrev_beam_type_i_ = 0; + chord_tremolo_type_i_ = 0; default_duration_.durlog_i_ = 2; - default_pitch_ = Musical_pitch (5*7, 0); error_level_i_ = 0; fatal_error_i_ = 0; @@ -43,8 +42,6 @@ My_lily_parser::~My_lily_parser() delete default_header_p_; } - - void My_lily_parser::set_version_check (bool ig) { @@ -58,7 +55,7 @@ My_lily_parser::parse_file (String init, String s) init_str_ = init; lexer_p_->main_input_str_ = s; - *mlog << _ ("Parsing..."); + progress_indication (_("Parsing...")); init_parse_b_ = false; set_yydebug (flower_dstream &&!flower_dstream->silent_b ("Parser")); @@ -105,78 +102,52 @@ My_lily_parser::set_last_duration (Duration const *d) } void -My_lily_parser::set_abbrev_beam (int type_i) -{ - abbrev_beam_type_i_ = type_i; -} - -void -My_lily_parser::set_last_pitch (Musical_pitch const* p) +My_lily_parser::set_chord_tremolo (int type_i) { - default_pitch_ = *p; + chord_tremolo_type_i_ = type_i; } -// junk me -Simultaneous_music* -My_lily_parser::get_word_element (String s, Duration * duration_p) -{ - Simultaneous_music* velt_p = new Request_chord; - Lyric_req* lreq_p = new Lyric_req; - lreq_p ->text_str_ = s; - lreq_p->duration_ = *duration_p; - lreq_p->set_spot (here_input()); - velt_p->add_music (lreq_p); - - delete duration_p; - return velt_p; -} // junk me Simultaneous_music * -My_lily_parser::get_rest_element (String s, Duration * duration_p) -{ - Simultaneous_music* velt_p = new Request_chord; - velt_p->set_spot (here_input()); - - if (s=="s") - { /* Space */ - Skip_req * skip_p = new Skip_req; - skip_p->duration_ = *duration_p; - - skip_p->set_spot (here_input()); - velt_p->add_music (skip_p); - } - else - { - Rest_req * rest_req_p = new Rest_req; - rest_req_p->duration_ = *duration_p; - rest_req_p->set_spot (here_input()); - - velt_p->add_music (rest_req_p); - } - - delete duration_p; - return velt_p; -} - -// junk me -Simultaneous_music * -My_lily_parser::get_chord (Musical_pitch tonic, Array* add_arr_p, Array* sub_arr_p, Musical_pitch* inversion_p, Duration d) +My_lily_parser::get_chord (Musical_pitch tonic, Array* add_arr_p, Array* sub_arr_p, Musical_pitch* inversion_p, Musical_pitch* bass_p, Duration d) { Simultaneous_music*v = new Request_chord; v->set_spot (here_input ()); - Chord chord (tonic, add_arr_p, sub_arr_p, inversion_p); + /* + UARGAUGRAGRUAUGRUINAGRAUGIRNA + + ugh + */ + Chord chord = to_chord (tonic, add_arr_p, sub_arr_p, inversion_p, bass_p); Tonic_req* t = new Tonic_req; t->pitch_ = tonic; v->add_music (t); - for (int i = 0; i < chord.pitch_arr_.size (); i++) + //urg + if (inversion_p + && Chord::find_notename_i (&chord.pitch_arr_, *inversion_p) > 0) + { + Inversion_req* i = new Inversion_req; + i->pitch_ = *inversion_p; + v->add_music (i); + } + + if (bass_p) + { + Bass_req* b = new Bass_req; + b->pitch_ = *bass_p; + v->add_music (b); + } + + Array pitch_arr = chord.to_pitch_arr (); + for (int i = 0; i < pitch_arr.size (); i++) { - Musical_pitch p = chord.pitch_arr_[i]; + Musical_pitch p = pitch_arr[i]; Note_req* n = new Note_req; n->pitch_ = p; n->duration_ = d;