]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/engraver-group.cc
release: 0.1.7
[lilypond.git] / lily / engraver-group.cc
index 1fd484572bbba685927bda27e8bf395111e3de3c..69038b5024eae8375109b40a8cd326a346fe5c76 100644 (file)
 #include "debug.hh"
 #include "p-score.hh"
 #include "score-elem.hh"
-#include "input-engraver.hh"
+#include "input-translator.hh"
+
+Engraver* get_engraver_p(String);
+
+void
+Engraver_group_engraver::print()const
+{ 
+    Engraver::print(); 
+}
 
 Engraver_group_engraver::~Engraver_group_engraver()
 {
@@ -30,7 +38,6 @@ Engraver_group_engraver::check_removal()
        else 
            i++;
     }
-    
 }
 
 bool
@@ -41,7 +48,7 @@ Engraver_group_engraver::removable_b()const
 
 Engraver_group_engraver::Engraver_group_engraver()
 {
-    igrav_l_ =0;
+    itrans_l_ = 0;
 }
 
 void
@@ -120,7 +127,7 @@ Engraver_group_engraver::do_try_request(Request*req_l)
     bool hebbes_b =false;
     for (int i =0; !hebbes_b && i < nongroup_l_arr_.size() ; i++)
        hebbes_b =nongroup_l_arr_[i]->try_request(req_l);
-    if (!hebbes_b)
+    if (!hebbes_b && daddy_grav_l_)
        hebbes_b = daddy_grav_l_->try_request(req_l);
     return hebbes_b ;
 }
@@ -159,21 +166,24 @@ void
 Engraver_group_engraver::terminate_engraver(Engraver*r_l)
 {
     mtor << "Removing " << r_l->name() << " at " << get_staff_info().when() << "\n";
-    r_l->do_removal_processing();
+    r_l->removal_processing();
     Engraver * grav_p =remove_engraver_p(r_l);
     
     delete grav_p;
 }
 
 IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator);
-IMPLEMENT_STATIC_NAME(Engraver_group_engraver);
+
 ADD_THIS_ENGRAVER(Engraver_group_engraver);
 
 void
 Engraver_group_engraver::do_print()const
 {
 #ifndef NPRINT
-    mtor << "ID: " << id_str_ << "\n";
+    if ( !check_debug)
+       return ;
+    mtor << "ID: " << id_str_ ;
+    mtor << " iterators: " << iterator_count_<< "\n";
     for (PCursor<Engraver*> i(grav_list_.top()); i.ok(); i++)
        i->print();
 #endif
@@ -197,17 +207,17 @@ Translator*
 Engraver_group_engraver::find_get_translator_l(String n,String id)
 {
     Translator * ret=0;
-    Input_engraver * igrav_l= igrav_l_-> recursive_find ( n );
-    if (igrav_l ) {
+    Input_translator * itrans_l= itrans_l_-> recursive_find ( n );
+    if (itrans_l ) {
        ret = find_engraver_l(n,id);
        if (!ret) {
            Engraver_group_engraver * group = 
-               igrav_l-> get_group_engraver_p();
+               itrans_l-> get_group_engraver_p();
            
            add(group);
            ret = group;
            
-           if (group->igrav_l_->is_name_b( n ) )
+           if (group->itrans_l_->is_name_b( n ) )
                ret ->id_str_ = id;
            else
                return ret->find_get_translator_l(n,id);
@@ -263,7 +273,7 @@ Engraver_group_engraver::do_announces()
               nongroup_l_arr_[i]->acknowledge_element(info);
        }
     }
-    announce_info_arr_.set_size(0);
+    announce_info_arr_.clear();
 }
 
 
@@ -271,7 +281,7 @@ void
 Engraver_group_engraver::do_removal_processing()
 {
     for (PCursor<Engraver*> i(grav_list_.top()); i.ok(); i++)
-       i->do_removal_processing();
+       i->removal_processing();
 }
 
 Staff_info
@@ -292,8 +302,8 @@ Engraver_group_engraver::get_default_interpreter()
     if ( is_bottom_engraver_b() )
        return daddy_grav_l_->get_default_interpreter();
 
-    Engraver_group_engraver *grav_p= igrav_l_->
-       get_default_igrav_l()->get_group_engraver_p();
+    Engraver_group_engraver *grav_p= itrans_l_->
+       get_default_itrans_l()->get_group_engraver_p();
     add(grav_p );
     if (grav_p->is_bottom_engraver_b())
        return grav_p;
@@ -304,5 +314,18 @@ Engraver_group_engraver::get_default_interpreter()
 bool
 Engraver_group_engraver::is_bottom_engraver_b()const
 {
-    return !igrav_l_->get_default_igrav_l();
+    return !itrans_l_->get_default_itrans_l();
 }
+
+Engraver*
+Engraver_group_engraver::get_simple_engraver(char const *type)const
+{
+    for (int i=0; i < nongroup_l_arr_.size(); i++) {
+       if (nongroup_l_arr_[i]->name() == type )
+           return nongroup_l_arr_[i];
+    }
+    if ( daddy_grav_l_ )
+       return daddy_grav_l_->get_simple_engraver(type);
+    return 0;
+}
+