]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.1
authorfred <fred>
Tue, 26 Mar 2002 21:28:32 +0000 (21:28 +0000)
committerfred <fred>
Tue, 26 Mar 2002 21:28:32 +0000 (21:28 +0000)
100 files changed:
Documentation/ntweb/index.yo
flower/include/dictionary.hh
flower/include/vector.hh
flower/include/virtual-methods.hh
lily/abbrev.cc
lily/abbreviation-beam-engraver.cc
lily/atom.cc
lily/auto-plet-engraver.cc
lily/bar-column-engraver.cc
lily/bar-column.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/beam-engraver.cc
lily/beam.cc
lily/chord-iterator.cc
lily/clef-engraver.cc
lily/collision-engraver.cc
lily/collision.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dynamic-engraver.cc
lily/engraver.cc
lily/hara-kiri-line-group-engraver.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/head-engraver.cc
lily/heads-engraver.cc
lily/include/atom.hh
lily/include/lily-guile.hh
lily/include/music-list.hh
lily/include/protected-scm.hh [new file with mode: 0644]
lily/include/spring-spacer.hh
lily/item.cc
lily/key-engraver.cc
lily/key-performer.cc
lily/lily-guile.cc
lily/local-key-engraver.cc
lily/lookup.cc
lily/lyric-engraver.cc
lily/main.cc
lily/mark-engraver.cc
lily/multi-measure-rest-engraver.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-output-def.cc
lily/music-sequence.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/note-column.cc
lily/p-score.cc
lily/performer.cc
lily/pitch-squash-engraver.cc
lily/plet-engraver.cc
lily/plet-spanner.cc
lily/plet-swallow-engraver.cc
lily/priority-halign-engraver.cc
lily/protected-scm.cc [new file with mode: 0644]
lily/request-iterator.cc
lily/request.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/score-element.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/score-priority-engraver.cc
lily/score.cc
lily/script-column.cc
lily/script-def.cc
lily/script-engraver.cc
lily/script.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc
lily/slur.cc
lily/span-bar-engraver.cc
lily/span-score-bar-engraver.cc
lily/spring-spacer.cc
lily/staff-margin-engraver.cc
lily/staff-performer.cc
lily/stem-engraver.cc
lily/stem.cc
lily/symtable.cc
lily/text-def.cc
lily/text-item.cc
lily/tie.cc
lily/ties-engraver.cc
lily/time-signature-engraver.cc
lily/timing-translator.cc
lily/type-swallow-trans.cc
lily/vertical-align-engraver.cc
make/generic-vars.make
make/toplevel.make.in
scripts/convert-mudela.py
stepmake/bin/package-zip32.sh
stepmake/stepmake/c++-vars.make
stepmake/stepmake/generic-vars.make

index 4460f700c880eea3d573ca0e041c1cee9df0232b..1a3a8df1f19444ff8aad11028e15cceb4529e7e9 100644 (file)
@@ -4,11 +4,12 @@ sect(Windows NT Binary Distribution)
 
 subsect(Introduction) label(introduction)
 
-This page is dedicated to the distribution of precompiled and preformatted
-LilyPond binaries for Windows NT 4.0 .  This package is covered under the 
-GNU General Public License and all of the source and documentation are 
+This page is dedicated to the distribution of precompiled and
+preformatted LilyPond binaries for Windows NT 4.0 .  This package is
+covered under the GNU General Public License and all of the source is
 available on the official 
 url(LilyPond Homepage)(http://www.cs.ruu.nl/people/hanwen/lilypond/index.html).
+A full set of url(documentation)(http://www.cs.ruu.nl/people/hanwen/lilypond/Documentation/tex/out-www/index.html) in various formats is also available.
 
 includefile(../BLURB.in)
 
@@ -69,8 +70,8 @@ itemize(
       In a batch file you can add the following entries: nl()
       bf(set LILYPONDPREFIX=em(LilyPond-dir)) nl()
       bf(set path=%path%;%LILYPONDPREFIX%\bin;em(MiKTeX-dir)\miktex\bin) nl()
-      bf(set TEXINPUTS=%LILYPONDPREFIX%\texmf\tex\lilypond;;) nl()
-      bf(set MFINPUTS=%LILYPONDPREFIX%\texmf\mf\public\lilypond;;) nl()
+      bf(set TEXINPUTS=%LILYPONDPREFIX%\share\lilypond\tex;;) nl()
+      bf(set MFINPUTS=%LILYPONDPREFIX%\share\lilypond\mf;;) nl()
 COMMENT(    dit(Windows Environment)
       In the Windows environment you can select
       properties menu of the My Computer icon. Click on
index d3c9a7afb331137c8a666a8b999f60141eb07a1a..e1e840b8a102ae23ad9356f82889c166ae7a8820 100644 (file)
@@ -183,7 +183,7 @@ public:
       V retval;
       if (!elem_b (k))
        return retval ;
-      retval ((Dictionary<V> *) this)->elem (k);
+      return ((Dictionary<V> *) this)->elem (k);
     }
 
   V remove (String s)
index 8b4d280cf5e940783692facc1198103b8a1d1e18..b4eeb9759709a32f8aaf4c2599ccdbea7bdad6e1 100644 (file)
@@ -78,6 +78,7 @@ public:
        return sqrt (norm_sq());
     }
     operator Array<Real>() { return dat; }
+  Array<Real> const &to_array()const { return dat; }  
     void print() const;
     /// set to j-th element of unit-base
     void set_unit (int j) ;
index 39795ce1158a86a1f5184885ce7e01506cfa2768..909267165b01ae9d6c801393af0c6f998cef1d83 100644 (file)
@@ -10,6 +10,7 @@
 #ifndef VIRTUAL_METHODS_HH
 #define VIRTUAL_METHODS_HH
 
+#include <typeinfo>
 #include "stdlib.h"            // size_t
 
 /**  Declare the classes name as a static and virtual function.
   s->name() != S::static_name (). Overlapping strings need not be merged in C++
  */
 #define DECLARE_MY_RUNTIME_TYPEINFO    \
-static bool static_is_type_b (const char*s);\
-virtual bool is_type_b (const char *s) const { return static_is_type_b (s); } \
-virtual char const *name() const{ return static_name (); } \
-virtual size_t class_size () const { return static_class_size (); }\
-static size_t static_class_size (); \
+virtual char const *name() const{ return static_name (); }\
 static char const *static_name()
 
-#define IMPLEMENT_STATIC_NAME(c)\
-    char const *c::static_name() { return #c; } \
-    size_t c::static_class_size () { return sizeof (c); }
 
+#if 0
+  /*
+    oops.  before() has nothing to do with inheritance
+   */
+inline bool operator > (type_info const &a1, type_info const &a2)
+{
+  return a2.before (a1);
+}
 
+inline bool operator < (type_info const &a1, type_info const &a2)
+{
+  return a1.before (a2);
+}
 
-#define VIRTUAL_COPY_CONS(T, R)\
-  virtual R *clone() const { return  new T(*this); } \
-  int  yet_another_stupid_function_to_allow_semicolon()
+inline bool operator <= (type_info const &a1, type_info const &a2)
+{
+  return a1 == a2 ||  a1 < a2;
+}
+
+inline bool operator >= (type_info const &a1, type_info const &a2)
+{
+  return a1 == a2 ||  a1 > a2;
+}
+#endif
+
+#define IMPLEMENT_STATIC_NAME(c)\
+    char const *c::static_name() { return #c; }
+
+     /*
+    size_t c::static_class_size () { return sizeof (c); }
+    */
 
+#define VIRTUAL_COPY_CONS(T, R)\
+  virtual R *clone() const { return  new T(*this); } 
 
 #define DECLARE_VIRTUAL_COPY_CONS(T, R)\
       virtual R *clone() const
+
 #define IMPLEMENT_VIRTUAL_COPY_CONS(T, R)\
        R *T::clone() const { return  new T(*this); }\
 
     
 #define IMPLEMENT_IS_TYPE_B(D)\
-  IMPLEMENT_STATIC_NAME(D)\
+  IMPLEMENT_STATIC_NAME(D)
+
+/*
   bool D::static_is_type_b (const char *s)\
 {\
   return s == static_name();\
-}
+}*/
 
 #define IMPLEMENT_IS_TYPE_B1(D, B)\
-  IMPLEMENT_STATIC_NAME(D)\
+  IMPLEMENT_STATIC_NAME(D)
+/*
   bool D::static_is_type_b (const char *s)\
 {\
   return s == static_name() || B::static_is_type_b (s);\
 }
+*/
 
 #define IMPLEMENT_IS_TYPE_B2(D, BA, BB)\
-  IMPLEMENT_STATIC_NAME(D)\
+  IMPLEMENT_STATIC_NAME(D)
+
+/*
+     
   bool D::static_is_type_b (const char *s)\
 {\
   return s == static_name() || BA::static_is_type_b (s) || BB::static_is_type_b (s);\
 }
+*/
 
 #endif 
index eb87945cd775fbac66812fdb3a74982a89f005f3..841f063ca6f739f095043dde8a6bfe2790914d3c 100644 (file)
@@ -129,7 +129,7 @@ void
 Abbreviation::do_substitute_dependent (Score_element*o, Score_element*n)
 {
   if (stem_l_ == o)
-    stem_l_ = n ? dynamic_cast<Stem*> (n) : 0;
+    stem_l_ = dynamic_cast<Stem*> (n);
 }
 
 
index be29437462043ae1f04b27e9318d7dcea687e28c..145ab50bcb786e29cf65f910219878caf4ad9286 100644 (file)
@@ -27,11 +27,7 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver ()
 bool
 Abbreviation_beam_engraver::do_try_request (Request*r)
 {
-  Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
-  if (!mus_l)
-    return false;
-
-  Abbreviation_beam_req * b = dynamic_cast <Abbreviation_beam_req *> (mus_l);
+  Abbreviation_beam_req * b = dynamic_cast <Abbreviation_beam_req *> (r);
 
   if (!b)
     return false;
@@ -40,7 +36,7 @@ Abbreviation_beam_engraver::do_try_request (Request*r)
     return false;
 
   Direction d = (!abeam_p_) ? LEFT : RIGHT;
-  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (mus_l))
+  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (b))
     return false;
 
   span_reqs_drul_[d] = b;
@@ -82,11 +78,10 @@ Abbreviation_beam_engraver::do_removal_processing ()
 void
 Abbreviation_beam_engraver::acknowledge_element (Score_element_info i)
 {
-  if (!abeam_p_ || !i.elem_l_->is_type_b (Stem::static_name ()))
+  Stem* s = dynamic_cast<Stem *> (i.elem_l_);
+  if (!abeam_p_ || !s)
     return;
 
-  Stem* s = (Stem*)dynamic_cast <Item *> (i.elem_l_);
-
   int type_i = span_reqs_drul_[LEFT]->type_i_;
   s->flag_i_ = intlog2 (type_i) - 2;
   if (span_reqs_drul_[RIGHT])
index 2d8f11e78e724b9f78d9ef3b053965d9b3a538db..ae6092c165e628f28185ed7bc7c5944cf73dc5fd 100644 (file)
@@ -6,7 +6,6 @@
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-
 #include "atom.hh"
 #include "interval.hh"
 #include "string.hh"
@@ -66,6 +65,7 @@ Atom::extent () const
 }
 
 
+
 Atom::Atom ()
   : dim_ (Interval (0,0),Interval (0,0))
 {
@@ -76,15 +76,15 @@ Atom::Atom ()
     But Atom is used as a simple type *everywhere*,
     and we don't have virtual contructors.
    */
-  lambda_ = 0;
   str_ = "unknown\n";
+  origin_l_ = 0;
 }
 
 Atom::Atom (String s, Box b)
   :  dim_ (b)
 {
-  lambda_ = 0;
   str_ = s;
+  origin_l_ = 0;  
 }
 
 
@@ -101,8 +101,6 @@ Atom::offset () const
   return off_;
 }
 
-
-
 void
 Atom::translate_axis (Real r, Axis a)
 {
index 254f029f59a6b5e9e554f2e840bb3880fc5c3026..c97be06723cb3731d13be58362a517f20f549b92 100644 (file)
 bool
 Tuplet_engraver::do_try_request (Request *r)
 {
-  Command_req * c = dynamic_cast <Command_req *> (r);
-  if (!(c &&
-      dynamic_cast <Bracket_req *> (c)))
+  if (Bracket_req * b = dynamic_cast <Bracket_req *> (r))
     {
-      return false;
+      bracket_req_arr_.push (b);
+      return true;
     }
-
-  Bracket_req * b = dynamic_cast <Bracket_req *> (c);
-  bracket_req_arr_.push (b);
-  return true;
+  return false;
 }
 
 void
@@ -59,9 +55,9 @@ Tuplet_engraver::do_process_requests ()
 void
 Tuplet_engraver::acknowledge_element (Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Note_column::static_name ()))
+  if (Note_column *nc = dynamic_cast<Note_column *> (i.elem_l_))
     {
-      Note_column *nc = (Note_column*)dynamic_cast <Item *> (i.elem_l_);
+
       for (int j =0; j  <started_span_p_arr_.size (); j++)
        // started_span_p_arr_[j]->add_column (nc);
        ;
index 0832448a2a0bc8feb9d12ed615de78b8ac5d98eb..230a0f3ea2a39f374bb81ce7ce29ff7732812a31 100644 (file)
@@ -12,6 +12,7 @@
 #include "request.hh"
 #include "script.hh"
 #include "bar.hh"
+#include <typeinfo>
 
 Bar_column_engraver::Bar_column_engraver()
 {
@@ -55,22 +56,24 @@ Bar_column_engraver::acknowledge_element (Score_element_info info)
   Item * it = dynamic_cast <Item *> (info.elem_l_);
   if (!it)
     return;
-
-  if (it->is_type_b (Script::static_name())
+  Script *s = dynamic_cast<Script*> (it);
+  Bar *b = dynamic_cast<Bar*> (it);
+  if (s
       && it->breakable_b_
       && info.origin_grav_l_arr_.size() == 1
       && it->break_priority_i_ == break_priority_i_)
     {
       create_column ();
-      barcol_p_->add_script ((Script*)it);
+      barcol_p_->add_script (s);
     }
   else if (info.origin_grav_l_arr_.size() == 1
           && it->break_priority_i_ == break_priority_i_
-          && it->breakable_b_ 
-          && it->is_type_b (Bar::static_name()))
+          && it->breakable_b_
+          &&b)
+
     {
       create_column ();
-      barcol_p_->set_bar ( (Bar*)it);
+      barcol_p_->set_bar (b);
     }
 }
 
index 74ce5386af7a62bb13f114732051f8edc67bab9a..5f1a40d93f2a61074e3c557df0fc9a6c09eb69a7 100644 (file)
@@ -28,7 +28,7 @@ Bar_column::do_substitute_dependency (Score_element*o,Score_element*n)
   Script_column::do_substitute_dependency (o,n);
   if (o == bar_l_) 
     {
-      bar_l_ = n ? (Bar*)dynamic_cast <Item *> (n) : 0;
+      bar_l_ =  dynamic_cast<Bar *> (n);
     }
 }
 
index 7a2a515cdc7456684173e3bc28c71eb673bba4a5..456a13cf400387bb7dcc3d82481482b75b3128f7 100644 (file)
@@ -23,16 +23,18 @@ Bar_engraver::Bar_engraver()
 bool
 Bar_engraver::do_try_request (Request*r_l)
 {
-  Command_req* c_l = dynamic_cast <Command_req *> (r_l);
-  if (!c_l|| !dynamic_cast <Bar_req *> (c_l)) 
-    return false;
-  Bar_req  * b= dynamic_cast <Bar_req *> (c_l);
-  if (bar_req_l_ && bar_req_l_->equal_b (b))
-    return false;
+  if (Bar_req  * b= dynamic_cast <Bar_req *> (r_l))
+    {
+      if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh?
+       return false;
+      
+      bar_req_l_ = b;
+
+      return true;
+    }
   
-  bar_req_l_ = b;
+  return false;
 
-  return true;
 }
 
 void
index 380cb651458965476d7045920b3e39d4006cb88f..455690e5165a34d02091e871b7fc330bfcf55eb7 100644 (file)
@@ -25,10 +25,8 @@ Bar_number_engraver::Bar_number_engraver()
 void
 Bar_number_engraver::acknowledge_element (Score_element_info i)
 {
-
-  Item *it=dynamic_cast <Item *> (i.elem_l_);
-  if (script_p_
-      || !it || !it->is_type_b (Bar::static_name()))
+  Bar *b =dynamic_cast <Bar *> (i.elem_l_);
+  if (script_p_ || !b)
       return;
 
   /* Only put numbers on bars that are at our own level (don't put
@@ -58,7 +56,7 @@ Bar_number_engraver::acknowledge_element (Score_element_info i)
       script_p_->break_priority_i_ = int (pri);
     }
   else
-    script_p_->break_priority_i_ = it->break_priority_i_;
+    script_p_->break_priority_i_ = b->break_priority_i_;
 
   Scalar padding = get_property ("barScriptPadding");
   if (padding.length_i() && padding.isnum_b ())
index 4ef398b499110aef61d9ee5a319586374c11ed3c..b8eb55903bed161e60dfa3a317a0bae5ecf5ae20 100644 (file)
@@ -25,11 +25,7 @@ Beam_engraver::Beam_engraver()
 bool
 Beam_engraver::do_try_request(Request*r)
 {
-  Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
-  if (!mus_l)
-    return false;
-
-  Beam_req* b = dynamic_cast <Beam_req *> (mus_l);
+  Beam_req* b = dynamic_cast <Beam_req *> (r);
   if (!b)
     return false;
 
@@ -37,7 +33,7 @@ Beam_engraver::do_try_request(Request*r)
     return false;
 
   Direction d = (!beam_p_) ? LEFT : RIGHT;
-  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (mus_l))
+  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (b))
     return false;
 
   span_reqs_drul_[d] = b;
@@ -97,10 +93,10 @@ Beam_engraver::do_removal_processing()
 void
 Beam_engraver::acknowledge_element (Score_element_info i)
 {
-  if (!beam_p_ || !i.elem_l_->is_type_b (Stem::static_name ()))
+  Stem* s = dynamic_cast<Stem *> (i.elem_l_);
+  if (!beam_p_ || !s)
     return;
 
-  Stem* s = (Stem*)dynamic_cast <Item *> (i.elem_l_);
   if (!dynamic_cast <Rhythmic_req *> (i.req_l_))
     {
       ::warning ( _("Stem must have Rhythmic structure."));
index a9dd24bda379306a3309e03769e52b883e604fab..4982dd3937d32c8599a1f9ffd7e008a43e65ed1c 100644 (file)
@@ -125,8 +125,9 @@ Beam::do_post_processing ()
 void
 Beam::do_substitute_dependent (Score_element*o,Score_element*n)
 {
-  if (o->is_type_b (Stem::static_name ()))
-      stems_.substitute ((Stem*)dynamic_cast <Item *> (o),  n? (Stem*) dynamic_cast <Item *> (n):0);
+  if (Stem * os = dynamic_cast<Stem*> (o))
+    stems_.substitute (os,
+                      dynamic_cast<Stem *> (n));
 }
 
 Interval
index 34c91c586c413bad45187422e17d3846bfed157a..8b691619ee15659a880ce8823a050693f45e7351 100644 (file)
@@ -24,7 +24,7 @@ Simultaneous_music_iterator::construct_children()
       if (mi->ok()) 
        {
          if  (simultaneous_music_l ()->translator_type_str_.empty_b ())
-           set_translator (mi->report_to_l()->ancestor_l (simultaneous_music_l ()->multi_level_i_));
+           set_translator (mi->report_to_l()->ancestor_l (0));
          children_p_list_.bottom().add (mi);
        }
       else 
index 462a9c140272e3dc89f91e570545a05707127bc0..83e6eff1e64eca0f498c6aea54ad934fea099a70 100644 (file)
@@ -14,8 +14,6 @@
 #include "debug.hh"
 #include "command-request.hh"
 #include "time-description.hh"
-
-
 #include "note-head.hh"
 #include "key-item.hh"
 #include "local-key-item.hh"
@@ -148,7 +146,7 @@ Clef_engraver::read_req (Clef_change_req*c_l)
 void
 Clef_engraver::acknowledge_element (Score_element_info info)
 {
-  if (info.elem_l_->is_type_b (Bar::static_name ()) 
+  if (dynamic_cast<Bar*>(info.elem_l_)
       && clef_type_str_.length_i())
     {
       create_clef();
@@ -158,24 +156,21 @@ Clef_engraver::acknowledge_element (Score_element_info info)
 
   /* ugh; should make Clef_referenced baseclass */
   Item * it_l =dynamic_cast <Item *> (info.elem_l_);
-if (it_l)
-  {
-  if (it_l->is_type_b (Note_head::static_name ()))
+  if (it_l)
     {
-      Note_head * h = (Note_head*)it_l;
-      h->position_i_ += c0_position_i_;
-    }
-  else if (it_l->is_type_b (Local_key_item::static_name ()))
-    {
-      Local_key_item *i = (Local_key_item*)it_l;
-      i->c0_position_i_ =c0_position_i_;
-    }
-  else if (it_l->is_type_b (Key_item::static_name ()))
-    {
-      Key_item *k = (Key_item*)it_l;
-      k-> set_c_position (c0_position_i_);
-    }
-  } 
+      if (Note_head * h = dynamic_cast<Note_head*>(it_l))
+       {
+         h->position_i_ += c0_position_i_;
+       }
+      else if (Local_key_item *i = dynamic_cast<Local_key_item*> (it_l))
+       {
+         i->c0_position_i_ =c0_position_i_;
+       }
+      else if (Key_item *k = dynamic_cast<Key_item*>(it_l))
+       {
+         k-> set_c_position (c0_position_i_);
+       }
+    } 
 }
 
 void
@@ -195,13 +190,15 @@ Clef_engraver::do_creation_processing()
 bool
 Clef_engraver::do_try_request (Request * r_l)
 {
-  Command_req* creq_l= dynamic_cast <Command_req *> (r_l);
-  if (!creq_l || !dynamic_cast <Clef_change_req *> (creq_l))
+  if (Clef_change_req *cl = dynamic_cast <Clef_change_req *> (r_l))
+    {
+      clef_req_l_ = cl;
+      read_req (clef_req_l_);
+      return true;
+    }
+  else
     return false;
 
-  clef_req_l_ = dynamic_cast <Clef_change_req *> (creq_l);
-  read_req (clef_req_l_);
-  return true;
 }
 
 void
index d7c6a102abbe2a4f79a9965c9f7747b57f1a051b..a0d5dc1006371a131a33630c1a91a75ed1d3ebf9 100644 (file)
@@ -28,9 +28,8 @@ Collision_engraver::process_acknowledged ()
 void
 Collision_engraver::acknowledge_element (Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Note_column::static_name ()))
+  if (Note_column * c = dynamic_cast<Note_column *> (i.elem_l_))
     {
-      Note_column * c = (Note_column*) dynamic_cast <Item *> (i.elem_l_);
       if (c->rest_b ())
        return ;
 
index 3a07ce18e1374f84e9842ca49764973f53fda7bc..a9971951b92c19304a06f1bed1e5c8bfd4ba7cc3 100644 (file)
@@ -18,6 +18,7 @@ Collision::Collision()
 void
 Collision::add_column (Note_column* ncol_l)
 {
+  // ugh.  Fixme.
   clash_l_arr_.push (ncol_l);
   add_element (ncol_l);
   add_dependency (ncol_l);
@@ -165,6 +166,10 @@ IMPLEMENT_IS_TYPE_B1(Collision, Item);
 void
 Collision::do_substitute_dependency (Score_element*o_l,Score_element*n_l)
 {
-  clash_l_arr_.substitute ((Note_column*)dynamic_cast <Item *> (o_l),
-                          (Note_column*)(n_l?dynamic_cast <Item *> (n_l):0));
+  if (o_l)
+    {
+      clash_l_arr_.substitute (dynamic_cast<Note_column *> (o_l),
+                              dynamic_cast <Note_column *> (n_l));
+
+    }
 }
index ae6259ac4c20517f11b7f00965bac3795aacf6c1..771963e3486929b45d9bb50b9fdf260169ad1d06 100644 (file)
@@ -30,13 +30,10 @@ Dot_column_engraver::do_pre_move_processing ()
 void
 Dot_column_engraver::acknowledge_element (Score_element_info info)
 {
-  Item * i=dynamic_cast <Item *> (info.elem_l_);
-  
-  if (! (i && i->is_type_b (Rhythmic_head::static_name ())))
+  Rhythmic_head * h = dynamic_cast<Rhythmic_head*>(info.elem_l_);
+  if (!h)
       return;
 
-  Rhythmic_head * h = (Rhythmic_head*)i;
-  
   if (!h->dots_l_)
     return;
 
index cee8a3edec21470a64a8d467b31b5d3faae9976b..284b746cc946841ec581cc52cbd3ccdc92f47ddb 100644 (file)
@@ -33,12 +33,13 @@ void
 Dot_column::do_substitute_dependency (Score_element*o,Score_element*n)
 {
   Item *oi =dynamic_cast <Item *> (o);
-  Item *ni = n?dynamic_cast <Item *> (n):0;
   
-  if (oi&&oi->is_type_b (Rhythmic_head::static_name ()))
-    head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni);
-  else if (oi && oi->is_type_b (Dots::static_name ()))
-    dot_l_arr_.substitute ((Dots*) oi, (Dots*) ni);
+  if (oi && dynamic_cast<Rhythmic_head *> (oi))
+    head_l_arr_.substitute (dynamic_cast<Rhythmic_head*> (oi),
+                           dynamic_cast<Rhythmic_head*>(n));
+  else if (oi && dynamic_cast<Dots *> (oi))
+    dot_l_arr_.substitute (dynamic_cast<Dots*> (oi),
+                          dynamic_cast<Dots*> (n));
 }
 
 void
index 2b38c4c08eec52421e1b5bd141a116d7773d0ff4..e0f26807487d36ddc06652a90fcc0090db49bf82 100644 (file)
@@ -34,24 +34,16 @@ Dynamic_engraver::do_post_move_processing()
 bool
 Dynamic_engraver::do_try_request (Request * r)
 {
-  Musical_req * m = dynamic_cast <Musical_req *> (r);
-  if (!m)
-    return false;
-  Dynamic_req * d = dynamic_cast <Dynamic_req *> (m);
-  if (!d)
-    return false;
-
-#if 0
-  if (cresc_p_ && dynamic_cast <Span_dynamic_req *> (d)
-      && dynamic_cast <Span_dynamic_req *> (d)->spantype == Span_req::START)
-    return false;
-#endif
-  for (int i=0; i < dynamic_req_l_arr_.size (); i++)
-    if (d->equal_b (dynamic_req_l_arr_[i]))
+  if(Dynamic_req * d = dynamic_cast <Dynamic_req *> (r))
+    {
+      for (int i=0; i < dynamic_req_l_arr_.size (); i++)
+       if (d->equal_b (dynamic_req_l_arr_[i]))
+         return true;
+      
+      dynamic_req_l_arr_.push (d);
       return true;
-
-  dynamic_req_l_arr_.push (dynamic_cast <Dynamic_req *> (m));
-  return true;
+    }
+  return false;
 }
 void
 Dynamic_engraver::do_process_requests()
@@ -60,7 +52,7 @@ Dynamic_engraver::do_process_requests()
   for (int i=0; i < dynamic_req_l_arr_.size(); i++)
     {
       Dynamic_req *dreq_l = dynamic_req_l_arr_[i];
-      if (dynamic_cast <Absolute_dynamic_req *> (dreq_l))
+      if (Absolute_dynamic_req *absd = dynamic_cast<Absolute_dynamic_req *> (dreq_l))
        {
 
          if (dynamic_p_)
@@ -71,8 +63,8 @@ Dynamic_engraver::do_process_requests()
          
          Text_def * td_p = new Text_def;
          td_p->align_dir_ = CENTER;
-         String loud = dynamic_cast <Absolute_dynamic_req *> (dreq_l)->loudness_str ();
-         td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_;
+         String loud = absd->loudness_str ();
+         td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_; // ugh
          td_p->style_str_ = "dynamic";
 
          
@@ -80,9 +72,8 @@ Dynamic_engraver::do_process_requests()
          dynamic_p_ = new Text_item (td_p);
          announce_element (Score_element_info (dynamic_p_, dreq_l));
        }
-      else if (dynamic_cast <Span_dynamic_req *> (dreq_l))
+      else if (Span_dynamic_req *span_l = dynamic_cast <Span_dynamic_req *> (dreq_l))
        {
-         Span_dynamic_req* span_l = dynamic_cast <Span_dynamic_req *> (dreq_l);
          if (span_l->spantype == Span_req::STOP)
            {
              if (!cresc_p_)
@@ -188,7 +179,7 @@ Dynamic_engraver::do_removal_processing ()
 void
 Dynamic_engraver::acknowledge_element (Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Note_column::static_name ()))
+  if (dynamic_cast<Note_column *> (i.elem_l_))
     {
       if (dynamic_p_)
        dynamic_p_->add_support (i.elem_l_);
index 8a79b6034624437b24ed07b99626e2409683c4e7..8fccb6a84dd7080e875e533e39db5135650458c1 100644 (file)
@@ -57,6 +57,6 @@ Engraver_group_engraver*
 Engraver::daddy_grav_l () const
 {
   return (daddy_trans_l_ )
-       ? (Engraver_group_engraver*) dynamic_cast <Engraver *> (daddy_trans_l_)
+       ? dynamic_cast<Engraver_group_engraver *> (daddy_trans_l_)
        : 0;
 }
index d85437a921f80d3bb7e6147714ca581c18f90b19..16619f83c83f377b38fa446447ec6a1c099bee16 100644 (file)
@@ -24,10 +24,11 @@ Hara_kiri_line_group_engraver::create_line_spanner ()
 void
 Hara_kiri_line_group_engraver::typeset_element(Score_element * e)
 {
-  if (e->is_type_b (Note_head::static_name ()))
-    ((Hara_kiri_vertical_group_spanner*)staffline_p_)->add_note 
-      ((Note_head*)dynamic_cast <Item *> (e));
-
+  if (Note_head *h = dynamic_cast<Note_head *> (e))
+    {
+      dynamic_cast<Hara_kiri_vertical_group_spanner*> (staffline_p_)
+       ->add_note  (h);
+    }
   Line_group_engraver_group::typeset_element (e);
 }
 
index 38468cf91cf8677ad8e3d033e79ebb6500f17d7e..9a31e52bcabf7c5efa98478b53beedeaea3e26e5 100644 (file)
@@ -43,9 +43,9 @@ Hara_kiri_vertical_group_spanner::do_post_processing ()
 void
 Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  if (o->is_type_b (Note_head::static_name ()))
-    head_l_arr_.substitute ((Note_head*)dynamic_cast <Item *> (o), 
-      (n)? (Note_head*)dynamic_cast <Item *> (n) : 0);
+  if (dynamic_cast<Note_head *> (o))
+    head_l_arr_.substitute (dynamic_cast<Note_head *> (o), 
+      (n)? dynamic_cast<Note_head *> (n) : 0);
 }
 
 
index ce4e5dcdf37bbd3439f20c76fc70f5bf3652d3dd..4b0a3b06fd5fa912505e8286d192044d8b02c38e 100644 (file)
@@ -23,11 +23,12 @@ Note_head_engraver::do_try_request (Request *req_l)
   if (note_req_l_)
     return false;
   
-  if (!(dynamic_cast <Note_req *> (req_l)))
-    return false;
-  
-  note_req_l_=dynamic_cast <Rhythmic_req *> (req_l);
-  return true;
+  if (Note_req * nr = dynamic_cast <Note_req *> (req_l))
+    {
+      note_req_l_= nr;
+      return true;
+    }
+  return false;
 }
 
 void
index a8e0aaa46b8e43f9edead8176020730159c64d0a..1fc262710232e13341a034d28f12ee7d3bc1f368 100644 (file)
@@ -18,15 +18,12 @@ Note_heads_engraver::Note_heads_engraver()
 bool
 Note_heads_engraver::do_try_request (Request *req_l) 
 {
-  if (!dynamic_cast <Musical_req *> (req_l)) 
-    return false;
-
-  Note_req * n =dynamic_cast <Note_req *> (req_l);
-  if (!n)
-    return false;
-  
-  note_req_l_arr_.push (n);
-  return true;
+  if (Note_req * n =dynamic_cast <Note_req *> (req_l))
+    {
+      note_req_l_arr_.push (n);
+      return true;
+    }
+  return false;
 }
 
 void
@@ -49,7 +46,7 @@ Note_heads_engraver::do_process_requests()
          dot_p_arr_.push (d);
        }
 
-      note_p->position_i_ = dynamic_cast <Note_req *> (note_req_l)->pitch_.steps ();
+      note_p->position_i_ = note_req_l->pitch_.steps ();
 
   
       Score_element_info itinf (note_p,note_req_l);
index f9621382bc3145370371b23ebe53808b1e53244e..1fd7ef262c91113a61c7eab2eaee858f19eebf2c 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef ATOM_HH
 #define ATOM_HH
 
-#include "lily-guile.hh"
+#include "protected-scm.hh"
 #include "string.hh"
 #include "box.hh"
 #include "lily-proto.hh"
 /// a symbol which can be translated, and freely copied
 class Atom {
   Offset off_;
+
+  
 public:
+  Protected_scm lambda_;
+  Score_element * origin_l_;
+
   // urg, only used as a temp buffer
   String str_;
   String font_;
-  SCM lambda_;
   Box dim_;
 
   Offset offset () const;
index 56ce820c7ee44bb87aebb0ce46ca20b13cafff44..c4479cb5674d50c31baff8c1b4ec36ba9a2e43bf 100644 (file)
@@ -40,4 +40,7 @@ SCM ly_quote ();
 SCM lambda_scm (String str, Array<Real> args_arr);
 SCM lambda_scm (String str, Array<Scalar> args_arr);
 
+
+
+
 #endif // LILY_GUILE_HH
index 6cdda3dc5b816b04cd33a133c100f48d19f0bcd7..477ab2465ffbab164d3c2f89eb246736e342b823 100644 (file)
@@ -30,7 +30,6 @@ public:
 class Music_sequence : public Music
 {
 public:
-  int multi_level_i_;
   Music_list * music_p_list_p_;
 
   Music_sequence (Music_sequence const&);
diff --git a/lily/include/protected-scm.hh b/lily/include/protected-scm.hh
new file mode 100644 (file)
index 0000000..e83593a
--- /dev/null
@@ -0,0 +1,30 @@
+/*   
+  protected-scm.hh -- declare Protected_scm
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef PROTECTED_SCM_HH
+#define PROTECTED_SCM_HH
+
+#include "lily-guile.hh"
+
+/*
+  Mix GUILE GC with C++ ctors and dtors. 
+ */
+class Protected_scm
+{
+  SCM object_;
+public:
+  Protected_scm ();
+  Protected_scm (SCM);
+  Protected_scm (Protected_scm const &);
+  ~Protected_scm ();
+  Protected_scm &operator = (Protected_scm const &);
+  operator SCM ();
+};
+
+#endif /* PROTECTED_SCM_HH */
index defcd15bc3d8cbfe7bdf61d26bd34a68e0682e8c..33390810ced06f6ccc14a3d4d6facd1edd7ba044 100644 (file)
 
 class Spring_spacer : public Line_spacer {
   friend class Durations_iter;
-  
-    
+
   Pointer_list<Idealspacing *> ideal_p_list_;
   Array<Column_info> cols_;
   Array<Column_info> loose_col_arr_;
-  Array<Spacer_rod> rods_;
+
   
   /// mark column #i# as being loose.
   void loosen_column (int i);
index e48d576cfd524635a5416901d5c60db695e00527..ad00cb3685660985070b01cc523388db75d4a97e 100644 (file)
@@ -129,10 +129,10 @@ Item::handle_prebroken_dependencies()
 int
 Item::left_right_compare(Item const *l, Item const *r)
 {
-  while (!l->is_type_b (Paper_column::static_name ()))
-    l = dynamic_cast<Item*> (l->axis_group_l_a_[X_AXIS]);
-  while (!r->is_type_b (Paper_column::static_name ()))
-    r = dynamic_cast<Item*> (r->axis_group_l_a_[X_AXIS]);
+  while (!(dynamic_cast<Paper_column const *> (l)))
+    l = dynamic_cast<Item const*> (l->axis_group_l_a_[X_AXIS]);
+  while (!(dynamic_cast<Paper_column const *> (r)))
+    r = dynamic_cast<Item const*> (r->axis_group_l_a_[X_AXIS]);
 
   Paper_column *p1 = (Paper_column*)l;
   Paper_column* p2 = (Paper_column*)r;
@@ -190,8 +190,3 @@ Item::Item (Item const &s)
   break_priority_i_ = s.break_priority_i_;
 }
 
-Item *
-Item::access_Item ()
-{
-  return this; 
-}
index bb66802d8604f6045f07449fe4ea758a8ef9e52f..77a29425f55ea91ea0da7ea0dae7c8e13c548393 100644 (file)
@@ -36,29 +36,27 @@ Key_engraver::create_key ()
 bool
 Key_engraver::do_try_request (Request * req_l)
 {
-  Command_req* creq_l= dynamic_cast <Command_req *> (req_l);
-  if (!creq_l|| !dynamic_cast <Key_change_req *> (creq_l))
-    return false;
-   
-  if (keyreq_l_)
-    return false;              // TODO
-  keyreq_l_ = dynamic_cast <Key_change_req *> (creq_l);
-  read_req (keyreq_l_);
-  return true;
+  if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
+    {
+      if (keyreq_l_)
+       warning ("Fixme: key change merge.");
+      keyreq_l_ = kc;
+      read_req (keyreq_l_);
+      return true;
+    }   
+  return  false;
 }
 
 void
 Key_engraver::acknowledge_element (Score_element_info info)
 {
-  Command_req * r_l = dynamic_cast <Command_req *> (info.req_l_) ;
-
-  if (r_l && dynamic_cast <Clef_change_req *> (r_l)) 
+  if (dynamic_cast <Clef_change_req *> (info.req_l_)) 
     {
       int i= get_property ("createKeyOnClefChange").length_i ();
       if (i)
        create_key ();
     }
-  else if (info.elem_l_->is_type_b (Bar::static_name ())
+  else if (dynamic_cast<Bar *> (info.elem_l_)
           && accidental_idx_arr_.size ()) 
     {
       if (!keyreq_l_)
index 3ccac03e21537a71d0b589984c1624838e53638c..b163e4022fc17d229d967d1e9e6b20ede1d37a4f 100644 (file)
@@ -29,7 +29,7 @@ Key_performer::do_print() const
 {
 #ifndef NPRINT
   if (key_req_l_)
-       key_req_l_->print();
+    key_req_l_->print();
 #endif
 }
 
@@ -37,19 +37,19 @@ void
 Key_performer::do_process_requests()
 {
   if (key_req_l_)
-       play (new Audio_key (key_req_l_));
+    play (new Audio_key (key_req_l_));
   key_req_l_ = 0;
 }
 
 bool
 Key_performer::do_try_request (Request* req_l)
 {
-  if (key_req_l_)
-       return false;
-
-  if (dynamic_cast <Key_change_req *> (req_l))
+  if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
     {
-      key_req_l_ = dynamic_cast <Key_change_req*> (req_l);
+      if (key_req_l_)
+       warning ("FIXME. Key change merge");
+
+      key_req_l_ = kc;
       return true;
     }
 
index daa7588554908930a8eb8376e471f8da18baa993..375ff4635952c945e3eafb18b2441cf1cb3973f7 100644 (file)
@@ -97,3 +97,4 @@ lambda_scm (String str, Array<Real> args_arr)
   return scm;
 }
 
+
index 54df397c45339fde06195a0472f54f8ce255b008..9b0658b6473e7c85a6bfd1e002361ef5a631564b 100644 (file)
@@ -40,7 +40,7 @@ Local_key_engraver::do_creation_processing ()
     }
   else
     {
-      key_C_ = &((Key_engraver*)dynamic_cast <Engraver *> (result))->key_;
+      key_C_ = &(dynamic_cast<Key_engraver *> (result))->key_;
       local_key_ = *key_C_;
     }
 }
@@ -96,23 +96,20 @@ Local_key_engraver::do_pre_move_processing()
 void
 Local_key_engraver::acknowledge_element (Score_element_info info)
 {    
-  Score_element * elem_l = info.elem_l_;
-  Item * item_l = dynamic_cast <Item *> (elem_l);
-
   Note_req * note_l =  dynamic_cast <Note_req *> (info.req_l_);
-
-  if (note_l &&  item_l && item_l->is_type_b (Note_head::static_name ()))
+  Note_head * note_head = dynamic_cast<Note_head *> (info.elem_l_);
+  
+  if (note_l && note_head)
     {
       mel_l_arr_.push (note_l);
-      support_l_arr_.push (item_l);
+      support_l_arr_.push (note_head);
     }
   else if (dynamic_cast <Key_change_req*> (info.req_l_))
     {
       local_key_ = *key_C_;
     }
-  else if (elem_l->is_type_b (Tie::static_name ())) 
+  else if (Tie * tie_l = dynamic_cast<Tie *> (info.elem_l_))
     {
-      Tie * tie_l = (Tie*)dynamic_cast <Spanner *> (elem_l);
       if (tie_l->same_pitch_b_)
        tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]);
     }
index 9d85d63ba9ec3282c8703e3e2174dfc515f4e861..c763bb56e1a97ad8093477232ae0fd5bd2faca02 100644 (file)
@@ -86,7 +86,7 @@ Lookup::afm_find (String s) const
   a.dim_[Y_AXIS] *= 1 / 1000.0;
   Array<Real> arr;
   arr.push (m.code ());
-  a.lambda_ = lambda_scm ("char", arr);
+  a.lambda_ =  (lambda_scm ("char", arr));
   a.font_ = font_;
   return a;
 }
@@ -106,7 +106,7 @@ Lookup::bar (String str, Real h) const
   Array<Real> arr;
   arr.push (h);
   Atom a = (*symtables_p_) ("bars")->lookup (str);
-  a.lambda_ = lambda_scm (a.str_, arr);
+  a.lambda_ =  (lambda_scm (a.str_, arr));
   a.dim_.y () = Interval (-h/2, h/2);
   a.font_ = font_;
   return a;
@@ -115,11 +115,17 @@ Lookup::bar (String str, Real h) const
 Atom 
 Lookup::beam (Real slope, Real width, Real thick) const
 {
-  Atom a (ps_beam (slope, width, thick));
   Real height = slope * width; 
   Real min_y = (0 <? height) - thick/2;
   Real max_y = (0 >? height) + thick/2;
-  
+
+  Array<Real> arr;
+  arr.push (width);
+  arr.push (slope);
+  arr.push (thick);
+
+  Atom a;
+  a.lambda_ =  (lambda_scm ("beam", arr));
   a.dim_[X_AXIS] = Interval (0, width);
   a.dim_[Y_AXIS] = Interval (min_y, max_y);
   return a;
@@ -145,7 +151,7 @@ Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
   a.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
 
   // (lambda (o) (dashed-slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2))))
-  a.lambda_ = 
+  a.lambda_ =  (
     ly_append (ly_lambda_o (), 
     ly_list1 (ly_append (ly_func_o ("dashed-slur"),
     gh_cons (gh_double2scm (thick), gh_cons (gh_double2scm (dash),
@@ -154,7 +160,7 @@ Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
     gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
     gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
     gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
-    SCM_EOL)))))))))));
+    SCM_EOL))))))))))));
 
   return a;
 }
@@ -210,7 +216,7 @@ Lookup::rule_symbol (Real height, Real width) const
   Array<Real> args;
   args.push (height);
   args.push (width);
-  bs.lambda_ = lambda_scm (bs.str_, args);
+  bs.lambda_ =  (lambda_scm (bs.str_, args));
   bs.dim_.x () = Interval (0, width);
   bs.dim_.y () = Interval (0, height);
   return bs;
@@ -223,19 +229,26 @@ Lookup::script (String str) const
 }
 
 Atom
-Lookup::special_time_signature (String s, Array<Scalar> arr) const
+Lookup::special_time_signature (String s, Array<Real> arr) const
 {
-#if 0
-  String symbolname = "timesig-"+s+"%/%";
-  Atom a (afm_find (lambda_scm (symbolname, arr)));
+  String symbolname = "timesig-" + s;
+  if (!arr.empty ())
+    symbolname += to_str (arr[0]);
+  if (arr.size () >1)
+    symbolname += "/" + to_str (arr[1]);
+  
+  Atom a = afm_find (symbolname);
   if (!a.empty ()) 
     return a;
+
+#if 0 //guess we covered this
   // Try if the full name was given
   a = afm_find ("timesig-"+s);
   if (!a.empty ()) 
     return a;
-  // Resort to default layout with numbers
 #endif
+
+  // Resort to default layout with numbers
   return time_signature (arr);
 }
 
@@ -261,7 +274,7 @@ Lookup::stem (Real y1, Real y2) const
   a.push (y2);
   a.push (-y1);
 
-  s.lambda_ = lambda_scm ("stem", a);
+  s.lambda_ =  (lambda_scm ("stem", a));
   s.font_ = font_;
   return s;
 }
@@ -282,17 +295,17 @@ Lookup::text (String style, String text) const
 
   a.push (text);
   Atom s =  (*symtables_p_) ("style")->lookup (style);
-  s.lambda_ = lambda_scm (s.str_, a);
+  s.lambda_ =  (lambda_scm (s.str_, a));
   s.font_ = font_;
 
   return s;
 }
 
 Atom
-Lookup::time_signature (Array<Scalar> a) const
+Lookup::time_signature (Array<Real> a) const
 {
   Atom s ((*symtables_p_) ("param")->lookup ("time_signature"));
-  s.lambda_ = lambda_scm (s.str_, a);
+  s.lambda_ =  (lambda_scm (s.str_, a));
 
   return s;
 }
@@ -327,7 +340,7 @@ Lookup::vbrace (Real &y) const
   
   Array<Real> a;
   a.push (idx);
-  brace.lambda_ = lambda_scm (brace.str_, a);
+  brace.lambda_ =  (lambda_scm (brace.str_, a));
   brace.dim_[Y_AXIS] = Interval (-y/2,y/2);
 
   brace.font_ = font_;
@@ -370,18 +383,6 @@ Lookup::plet (Real dy , Real dx, Direction dir) const
   return s;
 }
 
-Atom
-Lookup::ps_beam (Real slope, Real width, Real thick) const
-{
-  String ps;
-  ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick)
-    + " draw_beam ";
-
-  Atom s;
-  s.str_ = ps;
-  return s;
-}
-
 Atom
 Lookup::slur (Array<Offset> controls) const
 {
@@ -394,7 +395,7 @@ Lookup::slur (Array<Offset> controls) const
   Atom a;
  
   // (lambda (o) (slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2) .. )))
-  a.lambda_ = 
+  a.lambda_ =  (
     ly_append (ly_lambda_o (), 
     ly_list1 (ly_append (ly_func_o ("slur"),
     ly_list1 (ly_list2 (ly_quote (),
@@ -406,7 +407,7 @@ Lookup::slur (Array<Offset> controls) const
     gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
     gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
     gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
-    SCM_EOL)))))))))))));
+    SCM_EOL))))))))))))));
 
   a.dim_[X_AXIS] = Interval (0, dx);
   a.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
@@ -427,7 +428,7 @@ Lookup::vbracket (Real &y) const
     }
   Array<Real> arr;
   arr.push (y);
-  a.lambda_ = lambda_scm ("bracket", arr);
+  a.lambda_ =  (lambda_scm ("bracket", arr));
   a.dim_[Y_AXIS] = Interval (-y/2,y/2);
   a.dim_[X_AXIS] = Interval (0,4 PT);
   return a;
index da7102b1f7212bfef8c534b2158823c42db4ee96..9555cad7ebbd1182bb65817d23a025ad13085d0f 100644 (file)
@@ -23,12 +23,12 @@ Lyric_engraver::Lyric_engraver()
 bool
 Lyric_engraver::do_try_request (Request*r)
 {
-  Musical_req * m =dynamic_cast <Musical_req *> (r);
-  if (!m || ! dynamic_cast <Lyric_req *> (m)) 
-    return false;
-  lreq_l_ = dynamic_cast <Lyric_req *> (m);
-
-  return true;
+  if (Lyric_req * lr = dynamic_cast <Lyric_req *> (r))
+    {
+      lreq_l_ = lr;
+      return true;
+    }
+  return false;
 }
 
 void
index d9a7a0afc007447eb02a59f6cf431612be01dcf0..9adf5a59419f5e97679217da4bc9ad58829ffd0f 100644 (file)
@@ -224,15 +224,18 @@ setup_paths ()
 
   if (!prefix_directory.empty_b())
     {
-      global_path.add (prefix_directory + "/share/lilypond/init/");
-      global_path.add (prefix_directory + "/share/lilypond");
+      global_path.add (prefix_directory + "/share/lilypond/ly/");
+      global_path.add (prefix_directory + "/share/lilypond/afm/");
+    }
+  else
+    {
+      global_path.add (String (DIR_DATADIR) + "/ly/");
+      global_path.add (String (DIR_DATADIR) + "/afm/");  
     }
-
-  global_path.add (String (DIR_DATADIR) + "/ly/");
-  global_path.add (String (DIR_DATADIR) + "/afm/");  
 }
 
 
+
 void
 main_prog (int argc, char **argv)
 {
@@ -341,6 +344,7 @@ main_prog (int argc, char **argv)
        default_outname_base_global = outname_str;
       do_one_file (i, default_outname_base_global);
     }
+  exit( exit_status_i_);
 }
 
 int
@@ -355,12 +359,12 @@ main (int argc, char **argv)
 #endif
 }
 
-/*
-  urg: make input file name: 
+/**
+  make input file name from command arg.
 
-  input: file name
+  @input file name
 
-  output: file name with added default extension. "" is stdin.
+  @output file name with added default extension. "" is stdin.
           in reference argument: the extension. ".ly" if none
  */
 String
@@ -375,6 +379,7 @@ distill_inname_str (String name_str, String& ext_r)
          split_path (str,a,b,c,ext_r);
 
          // add extension if not present.
+         // UGH. Should parametrise in list of default extensions.
          if (ext_r.empty_b ())
            {
              ext_r = ".fly";
index 71119e4eb63a05e0f967f5a6070d366c7eacc7c4..3c25f1aeae76f3122eb686f288635720fed80370 100644 (file)
@@ -26,13 +26,12 @@ Mark_engraver::Mark_engraver ()
 bool
 Mark_engraver::do_try_request (Request* r_l)
 {
-  Command_req* c_l = dynamic_cast <Command_req *> (r_l);
-  if (!c_l || !dynamic_cast <Mark_req *> (c_l) || mark_req_l_) 
-    return false;
-
-  mark_req_l_ = dynamic_cast <Mark_req *> (c_l);
-
-  return true;
+  if (Mark_req *mr = dynamic_cast <Mark_req *> (r_l))
+    {
+      mark_req_l_ = mr;
+      return true;
+    }
+  return false;
 }
 
 void
index 03578a58153053d8da994bf152d9acc0acea0bc3..d72da1d4f0e545863f2bb217a95893583c893c09 100644 (file)
@@ -26,20 +26,20 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 bool
 Multi_measure_rest_engraver::do_try_request (Request* req_l)
 {
- if (!dynamic_cast<Multi_measure_rest_req *> (req_l))
-    return false;
-
-  if (multi_measure_req_l_)
-    if (!multi_measure_req_l_->equal_b (req_l)
-       || req_start_mom_ != now_moment ())
-      return false;
-  
-  multi_measure_req_l_ = dynamic_cast<Multi_measure_rest_req *> (req_l);
-  req_start_mom_ = now_moment ();
+ if (Multi_measure_rest_req *mr = dynamic_cast<Multi_measure_rest_req *> (req_l))
+   {
+     if (multi_measure_req_l_)
+       if (!multi_measure_req_l_->equal_b (req_l)
+          || req_start_mom_ != now_moment ())
+        return false;
   
-  rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
-
-  return true;
+     multi_measure_req_l_ = mr;
+     req_start_mom_ = now_moment ();
+     
+     rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
+     return true;
+   }
+ return false;
 }
 
 void
index 2b329815d6596e4ee5ddc89f89f165cffc2cce7a..5505c145a7436154c5d49ffc409b39a343948047 100644 (file)
@@ -136,19 +136,19 @@ Music_iterator*
 Music_iterator::static_get_iterator_p (Music const *m, Translator_group *report_l)
 {
   Music_iterator * p =0;
-  if (m->is_type_b (Request_chord::static_name()))
+  if (dynamic_cast<Request_chord  const *> (m))
     p = new Request_chord_iterator;
-  else if (m->is_type_b (Simultaneous_music::static_name())) 
+  else if (dynamic_cast<Simultaneous_music  const *> (m)) 
     p =  new Simultaneous_music_iterator;
-  else if (m->is_type_b (Sequential_music::static_name())) 
+  else if (dynamic_cast<Sequential_music  const *> (m)) 
     p =  new Sequential_music_iterator;
-  else if (m->is_type_b (Translation_property::static_name ()))
+  else if (dynamic_cast<Translation_property  const *> (m))
     p = new Property_iterator;
-  else if (m->is_type_b (Change_translator::static_name ()))
+  else if (dynamic_cast<Change_translator  const *> (m))
     p = new Change_iterator;
-  else if (m->is_type_b (Compressed_music::static_name ()))
+  else if (dynamic_cast<Compressed_music  const *> (m))
     p = new Compressed_music_iterator;
-  else if (m->is_type_b (Music_wrapper::static_name ()))
+  else if (dynamic_cast<Music_wrapper  const *> (m))
     p = new Music_wrapper_iterator;
 
   p->music_l_ = m;
index 7c47ded02722de0c675d8a534f2b8b57704609ac..b712f3e2554d57924e80b26521ae6bd8a3efe59c 100644 (file)
@@ -109,7 +109,6 @@ IMPLEMENT_IS_TYPE_B1(Request_chord, Simultaneous_music);
 Request_chord::Request_chord()
   : Simultaneous_music (new Music_list)
 {
-  multi_level_i_ =0;
 }
 
 
@@ -118,10 +117,9 @@ Request_chord::to_relative_octave (Musical_pitch last)
 {
   for (iter (music_p_list_p_->top(),i); i.ok (); i++)
     {
-      Musical_req *m = dynamic_cast<Musical_req*> (i.ptr ());
-      if (m && dynamic_cast <Melodic_req *> (m))
+      if (Melodic_req *m= dynamic_cast <Melodic_req *> (i.ptr ()))
        {
-         Musical_pitch &pit = dynamic_cast <Melodic_req *> (m)->pitch_;
+         Musical_pitch &pit = m->pitch_;
          pit.to_relative_octave (last);
          return pit;
        }
index 8e28cdf4bb49caf176fa3d02b86f80428f14c836..cdd7af56a8810f8d717e4add2dd835a1177cf5e8 100644 (file)
@@ -40,7 +40,7 @@ Music_output_def::Music_output_def (Music_output_def const &s)
   
   for (Dictionary_iter<Identifier*> i (*translator_p_dict_p_);  i.ok (); i++)
     {
-      Translator * t = i.val ()->access_Translator (false);
+      Translator * t = i.val ()->access_content_Translator (false);
       t-> output_def_l_ = this;
     }
 }
@@ -60,7 +60,7 @@ Translator*
 Music_output_def::find_translator_l (String name) const
 {
   if (translator_p_dict_p_->elem_b (name))
-    return  (*translator_p_dict_p_)[name]->access_Translator ();
+    return  (*translator_p_dict_p_)[name]->access_content_Translator (false);
 
   if (global_translator_dict_p->elem_b (name))
     return (*global_translator_dict_p)[name];
@@ -76,7 +76,7 @@ Music_output_def::get_global_translator_p ()
   if (!t)
     error (_("Can't find Score context"));
   t = t->clone ();
-  Global_translator *g = dynamic_cast <Translator_group *> (t)->global_l ();
+  Global_translator *g = dynamic_cast <Global_translator *> (t);
   t->add_processing ();
   
   return g;
@@ -98,6 +98,6 @@ Music_output_def::get_default_output () const
     return "";  
   Identifier * id = (*scope_p_) ["output"];
 
-  String *p = dynamic_cast <String *> (id);
+  String *p = id->access_content_String (false);
   return p ? *p : String ("");
 }
index fd00a120e840442cbbad33069ee7fc9eae687cc7..8d8299a510df7309b7643522e5f8409aa3f99e61 100644 (file)
@@ -13,7 +13,6 @@
 Music_sequence::Music_sequence (Music_sequence const&s)
   : Music (s)
 {
-  multi_level_i_ = s.multi_level_i_;
   music_p_list_p_ = new Music_list (*s.music_p_list_p_);
 }
 
@@ -21,7 +20,6 @@ IMPLEMENT_IS_TYPE_B1(Music_sequence, Music);
 
 Music_sequence::Music_sequence(Music_list *mlist_p)
 {
-  multi_level_i_ = 0;
   music_p_list_p_ = mlist_p;
 }
 
index 6c72cb538ada9bff71a691b52f1d3454d72d7105..c12cd16c29ab476e27dd9c02a4c5f93daf8aa701 100644 (file)
@@ -105,7 +105,7 @@ bool
 Melodic_req::do_equal_b (Request*r) const
 {
   Melodic_req* m= dynamic_cast <Melodic_req *> (r);
-  return !compare (*m, *this);
+  return m&& !compare (*m, *this);
 }
 
 int
@@ -131,7 +131,7 @@ Rhythmic_req::do_equal_b (Request*r) const
 {
   Rhythmic_req* rh = dynamic_cast <Rhythmic_req *> (r);
 
-  return !compare (*this, *rh);
+  return rh&& !compare (*this, *rh);
 }
 
 
@@ -178,7 +178,8 @@ Lyric_req::do_print () const
 bool
 Note_req::do_equal_b (Request*r) const
 {
-  return Rhythmic_req::do_equal_b (r) && Melodic_req::do_equal_b (r);
+  Note_req *n = dynamic_cast<Note_req*> (r);
+  return n&& Rhythmic_req::do_equal_b (n) && Melodic_req::do_equal_b (n);
 }
 
 
@@ -270,7 +271,7 @@ bool
 Span_req:: do_equal_b (Request*r) const
 {
   Span_req * s = dynamic_cast <Span_req *> (r);
-  return spantype == s->spantype;
+  return s&& spantype == s->spantype;
 }
 
 Span_req::Span_req ()
@@ -294,7 +295,7 @@ Script_req::do_equal_b (Request*r) const
 {
   Script_req * s = dynamic_cast <Script_req *> (r);
 
-  return  scriptdef_p_->equal_b (*s->scriptdef_p_);
+  return s&&  scriptdef_p_->equal_b (*s->scriptdef_p_);
 }
 
 Script_req::Script_req ()
@@ -401,7 +402,7 @@ bool
 Absolute_dynamic_req::do_equal_b (Request *r) const
 {
   Absolute_dynamic_req *a = dynamic_cast <Absolute_dynamic_req *> (r);
-  return loudness_ == a->loudness_;
+  return a&& loudness_ == a->loudness_;
 }
 
 String
@@ -451,7 +452,7 @@ Span_dynamic_req::do_equal_b (Request *req) const
 {
   Span_dynamic_req * s = dynamic_cast <Span_dynamic_req *> (req);
 
-  return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
+  return s&& Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
 }
 
 Span_dynamic_req::Span_dynamic_req ()
index 4c7d05a9a22ca8b6b561a2eb8965319592e72f29..df3634bce5b5f832217ac1f283148c786783d790 100644 (file)
@@ -109,7 +109,7 @@ My_lily_lexer::start_main_input ()
 }
 
 void
-My_lily_lexer::set_identifier (String name_str, Identifier* i, bool unique_b)
+My_lily_lexer::set_identifier (String name_str, Identifier* i, bool )
 {
   Identifier *old =0;
   if (scope_l_arr_.top ()->elem_b (name_str))
@@ -140,7 +140,7 @@ My_lily_lexer::~My_lily_lexer()
 }
 
 void
-My_lily_lexer::print_declarations (bool init_b) const
+My_lily_lexer::print_declarations (bool ) const
 {
   for (int i=scope_l_arr_.size (); i--; )
     {
index f3cdf87abaaa5ab9183586980a0e509094a2fc3b..a024f0dd681f58d2dba7c83d3adb8d8c4d9f4ba7 100644 (file)
@@ -177,6 +177,10 @@ My_lily_parser::get_note_element (Note_req *rq, Duration * duration_p)
   return v;
 }
 
+
+/*
+  UGH.
+ */
 Array<Request*>*
 My_lily_parser::get_parens_request (int t)
 {
@@ -314,13 +318,13 @@ Paper_def*
 My_lily_parser::default_paper_p ()
 {
   Identifier *id = lexer_p_->lookup_identifier ("$defaultpaper");
-  return id ? id->access_Paper_def () : new Paper_def ;
+  return id ? id->access_content_Paper_def (true) : new Paper_def ;
 }
 
 Midi_def*
 My_lily_parser::default_midi_p ()
 {
   Identifier *id = lexer_p_->lookup_identifier ("$defaultmidi");
-  return id ? id->access_Midi_def () : new Midi_def ;
+  return id ? id->access_content_Midi_def (true) : new Midi_def ;
 }
 
index b00cb5ea0aa7c5fbead811724d1bd26e8d6283ec..ef0c81e380d32d24a23eec70c33045f3e0c417ed 100644 (file)
@@ -102,30 +102,30 @@ Note_column::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   if (stem_l_ == o) 
     {
-      stem_l_ = n ? (Stem*)dynamic_cast <Item *> (n):0;
+      stem_l_ = n ? dynamic_cast<Stem *> (n):0;
     }
-  if (o->is_type_b (Note_head::static_name ()))
+  if (dynamic_cast<Note_head *> (o))
     {
-      head_l_arr_.substitute ((Note_head*)dynamic_cast <Item *> (o), 
-                             (n)? (Note_head*)dynamic_cast <Item *> (n) : 0);
+      head_l_arr_.substitute (dynamic_cast<Note_head *> (o), 
+                             (n)? dynamic_cast<Note_head *> (n) : 0);
     }
   Script_column::do_substitute_dependency (o,n);
-  if (o->is_type_b (Rest::static_name ())) 
+  if (dynamic_cast<Rest *> (o)) 
     {
-      rest_l_arr_.substitute ((Rest*)dynamic_cast <Item *> (o), 
-                             (n)? (Rest*)dynamic_cast <Item *> (n) : 0);
+      rest_l_arr_.substitute (dynamic_cast<Rest *> (o), 
+                             (n)? dynamic_cast<Rest *> (n) : 0);
     }
 }
 
 void
 Note_column::add_head (Rhythmic_head *h)
 {
-  if (h->is_type_b (Rest::static_name ()))
+  if (dynamic_cast<Rest *> (h))
     {
       rest_l_arr_.push ((Rest*)h);
       add_support (h);  
     }
-  if (h->is_type_b (Note_head::static_name ()))
+  if (dynamic_cast<Note_head *> (h))
     {
       head_l_arr_.push ((Note_head*) h);
       add_support (h);
index be107cd929467a8b64e2c3cb35222caa53fde825..6b68f7f0fd97b1aa8096167ffabaadb8da9a124c 100644 (file)
 #include "file-results.hh"
 #include "misc.hh"
 
+#if 0                          // has w32 advanced?
 // sucking Cygnus egcs - w32
 #include "list.tcc"
 #include "cursor.tcc"
+#endif
 
 Paper_score::Paper_score ()
 {
@@ -319,10 +321,11 @@ Paper_score::broken_col_range (Item const*l_item_l, Item const*r_item_l) const
   Item const*l=l_item_l;
   Item const*r=r_item_l;
 
-  while (! l->is_type_b(Paper_column::static_name ()))
+  // huh? see Item::left_right_compare ()
+  while (! (dynamic_cast<Paper_column const *> (l)))
     l = dynamic_cast<Item*> (l->axis_group_l_a_[X_AXIS]);
 
-  while (! r->is_type_b(Paper_column::static_name ()))
+  while (! (dynamic_cast<Paper_column const *> (r)))
     r = dynamic_cast<Item*>(r->axis_group_l_a_[X_AXIS]);
 
   PCursor<Paper_column*> start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ());
index 7c5e541f82ecc3d2e42c4de10bbb28d601851601..449caf22bb486cc2de1c436eafbd99a6fb2f01f9 100644 (file)
@@ -30,6 +30,6 @@ Performer_group_performer*
 Performer::daddy_perf_l () const
 {
   return (daddy_trans_l_) 
-    ?(Performer_group_performer*) dynamic_cast <Performer *> (daddy_trans_l_)
+    ?dynamic_cast<Performer_group_performer *> (daddy_trans_l_)
     : 0;
 }
index 4851cee02cfdbd1faa72b28f081e62e4174b90e8..8c3273cd7c9228c78a153e1bf4b0d8ae6b4f3769 100644 (file)
 void
 Pitch_squash_engraver::acknowledge_element (Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Note_head::static_name ()))
+  if (Note_head *nh = dynamic_cast<Note_head *> (i.elem_l_))
     {
-      Note_head * nl = (Note_head*)dynamic_cast <Item *> (i.elem_l_);
-      nl->position_i_  =0;
+      nh->position_i_  =0;
     }
 }
 
index ed85c58bfddeeafab1061a3e96a31167c34ed7b3..172a4912000e853001649497c97cfa9922219a59 100644 (file)
@@ -27,7 +27,9 @@ Plet_engraver::Plet_engraver ()
 void
 Plet_engraver::acknowledge_element (Score_element_info i)
 {
-  if (!i.elem_l_->is_type_b (Stem::static_name ()))
+
+  Stem * st = (dynamic_cast<Stem *> (i.elem_l_));
+  if (!st)
     return;
   if (!plet_spanner_p_)
     return;
@@ -35,10 +37,10 @@ Plet_engraver::acknowledge_element (Score_element_info i)
     return;
 
   if (!plet_spanner_p_->stem_l_drul_[LEFT])
-    plet_spanner_p_->set_stem (LEFT, (Stem*)dynamic_cast <Item *> (i.elem_l_));
+    plet_spanner_p_->set_stem (LEFT, st);
   else
     if (span_reqs_drul_[RIGHT] && !plet_spanner_p_->stem_l_drul_[RIGHT]) 
-      plet_spanner_p_->set_stem (RIGHT, (Stem*)dynamic_cast <Item *> (i.elem_l_));
+      plet_spanner_p_->set_stem (RIGHT, st);
 }
 
 bool
index 4a032ffc72354c5b418b4541b830d7467e456dad..57f6ca30cf0ac58153e17be59d7782a9d2514293 100644 (file)
@@ -130,7 +130,7 @@ Plet_spanner::do_post_processing ()
 void
 Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
 {
-  Stem* new_l = n ? (Stem*)dynamic_cast <Item *> (n) : 0;
+  Stem* new_l = n ? dynamic_cast<Stem *> (n) : 0;
   if (dynamic_cast <Item *> (o) == stem_l_drul_[LEFT])
     stem_l_drul_[LEFT] = new_l;
   else if (dynamic_cast <Item *> (o) == stem_l_drul_[RIGHT])
index 47da034354f9f714569e89005797e8842e0f2cdf..994a84003b610abcc3ce4e2be53439485ec6821d 100644 (file)
@@ -15,5 +15,5 @@ ADD_THIS_TRANSLATOR(Plet_swallow_engraver);
 bool
 Plet_swallow_engraver::do_try_request (Request* req_l)
 {
-  return  dynamic_cast <Plet_req *> (req_l);
+  return dynamic_cast<Plet_req *> (req_l);
 }
index 2aa56cb7cf17a6705d2ede2d59c922d328b1cd11..6a9d8d15ddf2be381eaefbc55d0147d343880c0a 100644 (file)
@@ -30,7 +30,7 @@ void
 Priority_horizontal_align_engraver::acknowledge_element (Score_element_info i)
 {
   Engraver* reg = i.origin_grav_l_arr_[0];
-  if (reg->is_type_b (Score_priority_engraver::static_name()))
+  if (dynamic_cast<Score_priority_engraver *> (reg))
     {
       if (!halign_p_) 
        {
diff --git a/lily/protected-scm.cc b/lily/protected-scm.cc
new file mode 100644 (file)
index 0000000..0304d91
--- /dev/null
@@ -0,0 +1,52 @@
+/*   
+  protected-scm.cc --  implement Protected_scm
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+#include "protected-scm.hh"
+extern "C"
+{
+#include <libguile/gc.h>
+};
+
+
+Protected_scm::Protected_scm ()
+{
+  object_ = 0;
+}
+
+Protected_scm::Protected_scm (SCM s)
+{
+  object_ = s  ? scm_protect_object (s): 0;
+}
+
+Protected_scm::Protected_scm (Protected_scm const &s)
+{
+  object_ = s.object_ ? scm_protect_object (s.object_) : 0;
+}
+
+Protected_scm & 
+Protected_scm::operator =(Protected_scm const &s)
+{
+  if (this == &s)
+    return *this;
+  if (object_)
+    scm_unprotect_object(object_);
+
+  object_ = (s.object_) ? scm_protect_object (s.object_): 0;
+  return *this;
+}
+
+Protected_scm::~Protected_scm ()
+{
+  if  (object_)
+    scm_unprotect_object (object_);
+}
+
+Protected_scm::operator SCM ()
+{
+  return object_;
+}
index 56764298f5900e2552044c9715af355e00002c65..5ed0f311556015b890cc3724c78e0184263a5a08 100644 (file)
@@ -65,11 +65,14 @@ Request_chord_iterator::do_process_and_next (Moment mom)
     {
       for (PCursor<Music*> i (elt_l ()->music_p_list_p_->top ()); i.ok(); i++)
        {
-         assert (i->is_type_b (Request::static_name()));
-         Request * req_l = (Request*)i.ptr();
-         bool gotcha = report_to_l()->try_request (req_l);
-         if (!gotcha)
-           req_l->warning (_f ("junking request: `%s\'", req_l->name()));
+         if (Request * req_l = dynamic_cast<Request*> (i.ptr()))
+           {
+             bool gotcha = report_to_l()->try_request (req_l);
+             if (!gotcha)
+               req_l->warning (_f ("junking request: `%s\'", req_l->name()));
+           }
+         else
+           i.ptr ()->warning (_f ("Huh? Not a Request: `%s\'", i.ptr()->name ()));
        }
       first_b_ = false;
     }
index 858d5c44d52956cf75991fcd16f1b024ddc52ead..aadbe80aef67c7a4b9cc385664196de46066a581 100644 (file)
@@ -23,17 +23,12 @@ Request::do_print() const
 bool
 Request::equal_b (Request *r) const
 {
-  if (is_type_b (r->name()))
-    return r->do_equal_b ((Request*)this);
-  if (r->is_type_b (name()))
-    return do_equal_b (r);
-        
-  return false;
+  return r->do_equal_b (this) || this->do_equal_b (r) ;
 }
 
 bool
 Request::do_equal_b (Request*) const
 {
-  return false;
+  return true;
 }
   
index 2c52168807a3f3a02764970b5194573dc4b745f4..89ac8e65316395df4975487433789f46984dc553 100644 (file)
@@ -36,8 +36,8 @@ Rest_collision_engraver::process_acknowledged ()
 void
 Rest_collision_engraver::acknowledge_element (Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Note_column::static_name()))
-    note_column_l_arr_.push ((Note_column*)dynamic_cast <Item *> (i.elem_l_));
+  if (dynamic_cast<Note_column *> (i.elem_l_))
+    note_column_l_arr_.push (dynamic_cast<Note_column *> (i.elem_l_));
 }
 
 void
index 54cfe814c1458152123cef4c40f81416c84092e8..095c6ac4695620804dfd895388847bf459a68c27 100644 (file)
@@ -133,14 +133,11 @@ Rest_collision::do_print() const
 void
 Rest_collision::do_substitute_dependency (Score_element*o,Score_element*n)
 {
-  Item*o_l = dynamic_cast <Item *> (o);
-  
-
-  if (o_l&&o_l->is_type_b (Note_column::static_name ()))
+  if (Note_column *onl = dynamic_cast<Note_column *> (o))
     {
-      Note_column *n_l = n?(Note_column*)dynamic_cast <Item *> (n):0;
-      rest_l_arr_.substitute ((Note_column*)o_l, n_l);
-      ncol_l_arr_.substitute ((Note_column*)o_l, n_l);
+      Note_column *n_l = n?dynamic_cast<Note_column *> (n):0;
+      rest_l_arr_.substitute (onl, n_l);
+      ncol_l_arr_.substitute (onl, n_l);
     }
 }
 
index f4f2e6efbe8b2085aa17284593aa0c1d6e9c28f5..2170886e550e7684cc0467acf1f607e21b481de0 100644 (file)
@@ -60,14 +60,14 @@ Rest_engraver::do_process_requests ()
 }
 
 bool
-Rest_engraver::do_try_request (Request *r)
+Rest_engraver::do_try_request (Request *req)
 {
-  Musical_req *m = dynamic_cast <Musical_req *> (r);
-  if (!m || !dynamic_cast <Rest_req *> (m))
-    return false;
-
-  rest_req_l_ = dynamic_cast <Rest_req *> (m); // ugh
-  return true;
+  if (Rest_req *r = dynamic_cast <Rest_req *> (req))
+    {
+      rest_req_l_ = r;
+      return true;
+    }  
+  return false;
 }
 
 IMPLEMENT_IS_TYPE_B1(Rest_engraver, Engraver);
index 8c1cacfdf5689884f7929b558682494fe9884137..8bccc1eec63e24f2ea876dac1bacd1028c627d9d 100644 (file)
@@ -70,21 +70,21 @@ Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
   Item * item =  dynamic_cast <Item *> (i.elem_l_);
   if (!item)
     return;
-  if (item->is_type_b (Script::static_name ())
+  if (dynamic_cast<Script *> (item)
       && i.req_l_
       && dynamic_cast <Musical_req *> (i.req_l_)) 
     {
       script_l_arr_.push ((Script*)item);
     }
-  else if (item->is_type_b (Stem::static_name()))
+  else if (dynamic_cast<Stem *> (item))
     {
       stem_l_ = (Stem*) item;
     }
-  else if (item->is_type_b (Rhythmic_head::static_name ()))
+  else if (dynamic_cast<Rhythmic_head *> (item))
     {
       rhead_l_arr_.push ((Rhythmic_head*)item);
     }
-  else if (item->is_type_b (Dot_column::static_name ()))
+  else if (dynamic_cast<Dot_column *> (item))
     {
       dotcol_l_ = (Dot_column*) item;
     }
index d4625e7c2b979d3a1461693d9a8aadea6061985c..b25b5ac950e20775e1862b507210e8298e74b58f 100644 (file)
@@ -52,7 +52,7 @@ void
 Rhythmic_head::do_substitute_dependent (Score_element*o,Score_element*n)
 {
   if (o == dots_l_)
-    dots_l_ = n ? (Dots*)dynamic_cast <Item *> (n) :0;
+    dots_l_ = n ? dynamic_cast<Dots *> (n) :0;
 }
 
 IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item);
index cbaadfc4f4b880c7c3e43090003c3f42c7b6479d..a82e50adeea0ce88e5fc2ca749b33bb8c0f46c4e 100644 (file)
@@ -176,6 +176,11 @@ Score_element::do_brew_molecule ()
   if (transparent_b_)
     return;
   Molecule *output= brew_molecule_p ();
+  for (PCursor<Atom*> i(output->atoms_); i.ok(); i++)
+    {
+      i->origin_l_ = this;
+    }
+  
   pscore_l_->outputter_l_->output_molecule (output, absolute_offset (), name());
   delete output;
 }
@@ -291,17 +296,16 @@ Score_element::handle_broken_dependencies()
       Score_element * elt = dependency (i);
       if (elt->line_l() != line)
        {
-         if (dynamic_cast <Spanner *> (elt)) 
+         if (Spanner *sp = dynamic_cast<Spanner *> (elt)) 
            {
-             Spanner * sp = dynamic_cast <Spanner *> (elt);
              Spanner * broken = sp->find_broken_piece (line);
              substitute_dependency (sp, broken);
 
              add_dependency (broken);
            }
-         else if (dynamic_cast <Item *> (elt))
+         else if (Item *original = dynamic_cast <Item *> (elt))
            {
-             Item * my_item = dynamic_cast <Item *> (elt)->find_prebroken_piece (line);
+             Item * my_item = original->find_prebroken_piece (line);
                
              substitute_dependency (elt, my_item);
              if (my_item)
index 30a38f5360cf12c182909ddee006cb08ec623a68..37a73b00c19646b93af9baaa3d00693f05b963a9 100644 (file)
@@ -104,10 +104,9 @@ Score_engraver::do_announces()
          */
        if (announce_info_arr_[i].req_l_) 
          {
-           Musical_req *m =dynamic_cast <Musical_req *> ( announce_info_arr_[i].req_l_);
-           if (m && dynamic_cast <Rhythmic_req *> (m)) 
+           if (Rhythmic_req *rq = dynamic_cast <Rhythmic_req *> (announce_info_arr_[i].req_l_))
              {
-               musical_column_l_->add_duration (m->duration());
+               musical_column_l_->add_duration (rq->duration());
              }
          }
       Engraver_group_engraver::do_announces();
@@ -128,9 +127,8 @@ Score_engraver::typeset_all()
   for  (int i =0; i < elem_p_arr_.size(); i++) 
     {
       Score_element * elem_p = elem_p_arr_[i];
-      if (dynamic_cast <Spanner *> (elem_p)) 
+      if (Spanner *s = dynamic_cast <Spanner *> (elem_p))
        {
-         Spanner *s = dynamic_cast <Spanner *> (elem_p);
          pscore_p_->typeset_unbroken_spanner (s);
 
            /*
@@ -241,22 +239,21 @@ Score_engraver::do_try_request (Request*r)
 {
   bool gotcha = Engraver_group_engraver::do_try_request (r);  
 
-  if (gotcha || !dynamic_cast <Command_req *> (r))
-    return gotcha;
-
-  Command_req * c = dynamic_cast <Command_req *> (r);
-  if (dynamic_cast <Break_req *> (c))
+  if (!gotcha)
     {
-      Break_req* b = (Break_req*)dynamic_cast <Break_req *> (c);
-      if (b->penalty_i_ <= Break_req::DISALLOW)
-       break_penalty_i_ = b->penalty_i_;
-      else if (b->penalty_i_ >= Break_req::FORCE)
+      if (Break_req* b = dynamic_cast<Break_req *> (r))
        {
-         command_column_l_->break_penalty_i_ = b->penalty_i_;
-         gotcha = true;
+         if (b->penalty_i_ <= Break_req::DISALLOW)
+           break_penalty_i_ = b->penalty_i_;
+         else if (b->penalty_i_ >= Break_req::FORCE)
+           {
+             command_column_l_->break_penalty_i_ = b->penalty_i_;
+             gotcha = true;
+           }
        }
     }
-  return gotcha;
+   return gotcha;
+
 }
 
 IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver);
@@ -266,7 +263,7 @@ void
 Score_engraver::do_add_processing ()
 {
   Translator_group::do_add_processing ();
-  assert (output_def_l_->is_type_b (Paper_def::static_name ()));
+  assert (dynamic_cast<Paper_def *> (output_def_l_));
   assert (!daddy_trans_l_);
   pscore_p_ = new Paper_score;
   pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
index 9e91c14b24993ff96dbac317f71f7dc22068a60e..48822afc4c3dbdbb627cc8e91aa931d67106a05b 100644 (file)
@@ -35,11 +35,11 @@ Score_performer::~Score_performer()
 void
 Score_performer::play (Audio_element * p)
 {
-  if  (p->is_type_b (Audio_item::static_name())) 
+  if  (dynamic_cast<Audio_item *> (p)) 
     {
       audio_column_l_->add_audio_item ((Audio_item*)p);
     }
-  else if (p->is_type_b (Audio_staff::static_name())) 
+  else if (dynamic_cast<Audio_staff *> (p)) 
     {
       performance_p_->add_staff ((Audio_staff*)p);
     }
@@ -95,7 +95,7 @@ void
 Score_performer::do_add_processing ()
 {
   Translator_group::do_add_processing ();
-  assert (output_def_l_->is_type_b (Midi_def::static_name ()));
+  assert (dynamic_cast<Midi_def *> (output_def_l_));
   performance_p_ = new Performance;
   performance_p_->midi_l_ = (Midi_def*) output_def_l_;  
 }
index 3de5ea9f00128d9dce9f91b62bc6d810ee48229a..bb9f75513c8e44c953898448fe173c779f4cee99 100644 (file)
@@ -42,7 +42,7 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf)
        Don't try to eat up our (probable) parent.
       */
       if (inf.origin_grav_l_arr_.size () <= 1 &&
-         item_l->is_type_b (Break_align_item::static_name ()))
+         dynamic_cast<Break_align_item *> (item_l))
        return; 
 
       
index 8600a6a1818e20f2d1063d486916f38e0eb3d101..291616b8822d81c84fa1228a7f713aa5b5f87859 100644 (file)
@@ -129,7 +129,7 @@ Score::process()
   for (int i=0; i < def_p_arr_.size (); i++)
     {
       if (no_paper_global_b 
-         && def_p_arr_[i]->is_type_b (Paper_def::static_name ()))
+         && dynamic_cast<Paper_def*>(def_p_arr_[i]))
        continue;
       run_translator (def_p_arr_[i]);
     }
index d85e1a6e0bdde1e21d2067a6c46fba7200a4b7d3..e00f9f04a6c860b661c392beba41df763f506c1d 100644 (file)
@@ -107,7 +107,9 @@ Script_column::do_substitute_dependency (Score_element*o,Score_element*n)
 {
   if (dynamic_cast <Item *> (o)) 
     {
-      script_l_arr_.substitute ((Script*)dynamic_cast <Item *> (o),(Script*) (n?dynamic_cast <Item *> (n):0));
-      support_l_arr_.substitute (dynamic_cast <Item *> (o), (n?dynamic_cast <Item *> (n):0));
+      script_l_arr_.substitute (dynamic_cast<Script *> (o),
+                               dynamic_cast <Script *> (n));
+      support_l_arr_.substitute (dynamic_cast <Item *> (o),
+                                dynamic_cast <Item *> (n));
     }
 }
index 05074c7107993dd4e4663d4f5aa2cb4e19c2995c..daf721f0416ac8327228cd3d98e07a0356839e31 100644 (file)
@@ -46,8 +46,8 @@ Script_def::do_print() const
 bool
 Script_def::do_equal_b (General_script_def const *g) const 
 {
-  Script_def const * c = (Script_def const*) g;
-  return (symidx_str_ == c->symidx_str_ &&
+  Script_def const * c = dynamic_cast<Script_def const*> (g);
+  return c&& (symidx_str_ == c->symidx_str_ &&
          rel_stem_dir_ == c->rel_stem_dir_&&
          staff_dir_ == c->staff_dir_&&
          invertsym_b_ == c->invertsym_b_);
index f27577e44b17e5228dfb110f148fb5a48021240c..c68a165d11eaaa64e775fa4ad3fe5fb8559de99f 100644 (file)
@@ -61,7 +61,7 @@ Script_engraver::do_pre_move_processing()
       if (!script_p->specs_p_->inside_b())
        script_p->add_support (s_l);
 
-      if (script_p->specs_p_->is_type_b (Text_def::static_name ()))
+      if (dynamic_cast<Text_def *> (script_p->specs_p_)) // UGH
        {
          Text_def * td_l = (Text_def*)script_p->specs_p_;
          Scalar style = get_property ("textstyle");
index ee525907ae929e1fb27a75f18d3c95244219be0f..c7e5d4177050a6481fcfc3882adb8b2dc06687b3 100644 (file)
@@ -27,7 +27,7 @@ Script::do_substitute_dependency (Score_element*o,Score_element*n)
   Staff_side::do_substitute_dependency (o,n);
   if (o == stem_l_)
     {
-      stem_l_ = n ? (Stem*)dynamic_cast <Item *> (n) : 0;
+      stem_l_ = dynamic_cast<Stem *> (n);
     }
 }
 
index 059afad994521fe15d33079eaf802d79ec5c9be0..2b31c9eee741ef566c7174af59dc4ff4137e86e1 100644 (file)
@@ -62,11 +62,10 @@ IMPLEMENT_IS_TYPE_B1(Separating_group_spanner, Spanner);
 void
 Separating_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  if (o->is_type_b (Single_malt_grouping_item::static_name ()))
+  if (dynamic_cast<Single_malt_grouping_item *> (o))
     {
-      Single_malt_grouping_item*ns = n ?
-       (Single_malt_grouping_item*)dynamic_cast <Item *> (n) : 0;
-      spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)dynamic_cast <Item *> (o), ns);
+      Single_malt_grouping_item*ns = dynamic_cast<Single_malt_grouping_item *> (n);
+      spacing_unit_l_arr_.substitute (dynamic_cast<Single_malt_grouping_item *> (o), ns);
     }
 }
 
index f43b99a3c30a498e10557aac67424f505ce6b3f4..bf046b82acedfc40b8647152e31dc1d9e11df270 100644 (file)
@@ -41,8 +41,8 @@ Separating_line_group_engraver::acknowledge_element (Score_element_info i)
   Item * it = dynamic_cast <Item *> (i.elem_l_);
   if (it && !it->axis_group_l_a_[X_AXIS])
     {
-      Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
-                                         break_malt_p_ : nobreak_malt_p_);
+      Single_malt_grouping_item *&p_ref_ (it->breakable_b_
+                                         break_malt_p_ : nobreak_malt_p_);
 
       if (!p_ref_)
        {
index 56541540f127874be31888dd2898af73092de6a7..0b1af3f676623b533331b3781e8f02aabc96edf6 100644 (file)
@@ -48,7 +48,8 @@ Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_elem
 {
   if (dynamic_cast <Item *> (o))
     {
-      item_l_arr_.unordered_substitute (dynamic_cast <Item *> (o),  n ? dynamic_cast <Item *> (n) : 0);
+      item_l_arr_.unordered_substitute (dynamic_cast <Item *> (o),
+                                       dynamic_cast <Item *> (n));
     }
 }
 
index e7447b74320e71ba59d6c1c93d3ea2d0316eb746..33e2b24c2391138feda8e1ca3e8d2061542e83a9 100644 (file)
@@ -16,19 +16,20 @@ bool
 Slur_engraver::do_try_request (Request *req_l)
 {
   Musical_req *mus_l = dynamic_cast <Musical_req *> (req_l);
-  if (!mus_l || !dynamic_cast <Slur_req *> (mus_l))
-    return false;
-
-  new_slur_req_l_arr_.push (dynamic_cast <Slur_req *> (mus_l));
-  return true;
+  if (Slur_req *sl = dynamic_cast <Slur_req *> (mus_l))
+    {
+      new_slur_req_l_arr_.push (dynamic_cast <Slur_req *> (mus_l));
+      return true;
+    }
+  return false;
 }
 
 void
 Slur_engraver::acknowledge_element (Score_element_info info)
 {
-  if (info.elem_l_->is_type_b (Note_column::static_name ()))
+  if (dynamic_cast<Note_column *> (info.elem_l_))
     {
-      Note_column *col_l =(Note_column*) dynamic_cast <Item *> (info.elem_l_) ;// ugh
+      Note_column *col_l =dynamic_cast<Note_column *> (info.elem_l_) ;// ugh
       for (int i = 0; i < slur_l_stack_.size(); i++)
        slur_l_stack_[i]->add_column (col_l);
       for (int i = 0; i < end_slur_l_arr_.size(); i++)
index 41769d8e0c6d7b2f3188d4722b542eb2c7dd356e..73c8cb98fbb40f9590ae160a8c5d503942965b5d 100644 (file)
@@ -76,10 +76,10 @@ void
 Slur::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   int i;
-  while ((i = encompass_arr_.find_i ((Note_column*)dynamic_cast <Item *> (o))) >=0) 
+  while ((i = encompass_arr_.find_i (dynamic_cast<Note_column *> (o))) >=0) 
     {
       if (n)
-       encompass_arr_[i] = (Note_column*)dynamic_cast <Item *> (n);
+       encompass_arr_[i] = dynamic_cast<Note_column *> (n);
       else
        encompass_arr_.del (i);
     }
index 4d3dc1f6f46c18f60767f5a93f37d7d359c8a842..acf9c4fb06a21ada1a4c1b7c277099c71e641d11 100644 (file)
@@ -38,9 +38,9 @@ Span_bar_engraver::acknowledge_element (Score_element_info i)
 {
   int depth = i.origin_grav_l_arr_.size();
   if (depth > 1
-      && i.elem_l_->is_type_b (Bar::static_name())) 
+      && dynamic_cast<Bar *> (i.elem_l_)) 
     {
-      bar_l_arr_.push ((Bar*)dynamic_cast <Item *> (i.elem_l_));
+      bar_l_arr_.push (dynamic_cast<Bar *> (i.elem_l_));
        
       if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
        /*
@@ -62,10 +62,10 @@ Span_bar_engraver::acknowledge_element (Score_element_info i)
          spanbar_p_-> type_str_ = bar_l_arr_[0]->type_str_;
        }
     }
-  else if  (i.elem_l_->is_type_b (Vertical_align_spanner::static_name()
+  else if  (dynamic_cast<Vertical_align_spanner *> (i.elem_l_
            && i.origin_grav_l_arr_.size() <= 2) 
     {
-      valign_l_ = (Vertical_align_spanner*)dynamic_cast <Spanner *> (i.elem_l_);
+      valign_l_ = dynamic_cast<Vertical_align_spanner *> (i.elem_l_);
     }
 }
 
index d3cff445e5fe397baabad9a2632d7e0096989066..0aa5e9852ad1e151b33c932d84499a276ba57747 100644 (file)
@@ -48,7 +48,7 @@ void
 Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
 {
   Span_bar_engraver::acknowledge_element (i);
-  if (i.elem_l_->is_type_b (Piano_brace::static_name ()))
+  if (dynamic_cast<Piano_brace *> (i.elem_l_))
     {
       Span_bar* b =  dynamic_cast <Span_bar *> (i.elem_l_);
       Piano_brace * piano_l = (Piano_brace*) b;
index 99939fcd6b55900401845a3e83ca78550723c234..b10b0ba8bf8caca3bb6a687c3d6d995abc593866 100644 (file)
@@ -20,6 +20,7 @@
 #include "score-column.hh"
 #include "paper-def.hh"
 #include "colhpos.hh"
+#include "main.hh"
 
 Vector
 Spring_spacer::default_solution() const
@@ -324,10 +325,10 @@ Spring_spacer::Spring_spacer ()
 void
 Spring_spacer::solve (Column_x_positions*positions) const
 {
-
   DOUT << "Spring_spacer::solve ()...";
-  Vector solution_try;
 
+  Vector solution_try;
+    
   bool constraint_satisfaction = try_initial_solution_and_tell (solution_try); 
   if  (constraint_satisfaction)
     {
@@ -335,9 +336,9 @@ Spring_spacer::solve (Column_x_positions*positions) const
       make_matrices (lp.quad_,lp.lin_, lp.const_term_);
       make_constraints (lp);
       set_fixed_cols (lp);
-
+       
       Vector solution_vec (lp.solve (solution_try));
-
+       
       positions->satisfies_constraints_b_ = check_constraints (solution_vec);
       if (!positions->satisfies_constraints_b_)
        {
@@ -352,6 +353,7 @@ Spring_spacer::solve (Column_x_positions*positions) const
     {
       positions->set_stupid_solution (solution_try);
     }
+
   DOUT << "Finished Spring_spacer::solve ()...";
 }
 
index a80d36bd0a8bdbb844e8ae1b5194073491ea62cd..92c5cdd139867fd430618473fbfe478e9e21e5dd 100644 (file)
@@ -44,7 +44,7 @@ Staff_margin_engraver::acknowledge_element (Score_element_info i)
 
   if (!it
       || script_p_ 
-      || !it->is_type_b (Bar::static_name())
+      || !(dynamic_cast<Bar *> (it))
       || (i.origin_grav_l_arr_.size() != 1))
     return;
 
index ac2cfa3aab92b99bd22df23683d1974a8b87afa6..90f2c63ebcf086b4b6f0e83d5413e94cfa981aaa 100644 (file)
@@ -97,7 +97,7 @@ Staff_performer::new_instrument_str ()
 void 
 Staff_performer::play (Audio_element* p)
 {
-  if (p->is_type_b (Audio_item::static_name ())) 
+  if (dynamic_cast<Audio_item *> (p)) 
     {
       audio_staff_p_->add_audio_item ( (Audio_item*)p);
     }
index e21c8c901234ad7525f1562925f10900852ba323..65351c29a7dec1fc27502879a0a8fcf493589c33 100644 (file)
@@ -36,9 +36,9 @@ Stem_engraver::do_creation_processing ()
 void
 Stem_engraver::acknowledge_element(Score_element_info i)
 {
-  if (i.elem_l_->is_type_b (Rhythmic_head::static_name()))
+  if (dynamic_cast<Rhythmic_head *> (i.elem_l_))
     {
-      Rhythmic_head *h  = (Rhythmic_head*) dynamic_cast <Item *> (i.elem_l_);
+      Rhythmic_head *h  = dynamic_cast<Rhythmic_head *> (i.elem_l_);
       if (!stem_p_) 
        {
          Rhythmic_req * r = dynamic_cast <Rhythmic_req *> (i.req_l_);
index 423b40b397e8fa220bfedf0c2c97c5b89d25e2e5..09193e06471d17d6488f5b52ccae5c01f70f27b2 100644 (file)
@@ -115,11 +115,11 @@ void
 Stem::add_head (Rhythmic_head *n)
 {
   n->add_dependency (this);    // ?
-  if (n->is_type_b (Note_head::static_name ()))
+  if (dynamic_cast<Note_head *> (n))
     {
       head_l_arr_.push ((Note_head*)n);
     }
-  else if (n->is_type_b (Rest::static_name ()))
+  else if (dynamic_cast<Rest *> (n))
     {
       rest_l_arr_.push ((Rest*)n);
     }
index cc3cecff23140339de16c96438dcf0fd18466a37..dd9cb2f732107caa62b335fc45e9f3465fef5fb4 100644 (file)
@@ -31,7 +31,7 @@ Symtables::Symtables (Symtables const &s)
 
 Symtables::~Symtables()
 {
-  for (Dictionary_iter< Symtable*>  i (*this); i.ok(); i++)
+  for (Dictionary_iter<Symtable*>  i (*this); i.ok(); i++)
     {
       delete i.val();
     }
@@ -60,12 +60,12 @@ Symtables::operator()(String s)
     {
       error (_f ("Symtable `%s\' unknown", s));
       /* 
-        We can 't return, because we'll dump core anyway.
+        We can 't return, because we would dump core anyway.
        */
       return 0;
     }
   else
-    return Dictionary<Symtable*>::operator[](s);
+    return elem(s);
 }
 void
 Symtables::print() const
index 3597f30e5e93219cfa46b49c611168bb8a96d5ac..06eccd3fe6d120ede73d8110c88cf864b71ba329 100644 (file)
@@ -65,8 +65,8 @@ Text_def::Text_def()
 bool
 Text_def::do_equal_b (General_script_def const *gdef) const
 {
-  Text_def const *def= (Text_def*)gdef;
-  return align_dir_ == def->align_dir_ && text_str_ == def->text_str_
+  Text_def const *def= dynamic_cast<Text_def const*>(gdef);
+  return def&& align_dir_ == def->align_dir_ && text_str_ == def->text_str_
        && style_str_ == def->style_str_;
 }
 
index c23b63c9a575b69921a157f3beda7351e1ea01de..35dcbdb49f927adb4bd7bb092dabfbd7ae3bcffa 100644 (file)
@@ -38,9 +38,11 @@ Real
 Text_item::get_position_f () const
 {
   // uhuh, tdef/gdef?
-  if ( (tdef_p_->name () != Text_def::static_name ()) 
-    || ( ( (Text_def*)tdef_p_)->style_str_ != "finger"))
-    return Staff_side::get_position_f ();
+  if (Text_def *tdl = dynamic_cast<Text_def*>(tdef_p_))
+    {
+      if (tdl->style_str_ != "finger") // HUHH?
+       return Staff_side::get_position_f ();
+    }
 
   if (!dir_)
     {
index 002c5e969478b3a621020b89d283840d4b2e1709..1bf3a9640e42e7e82b2420935d4bb3137d0e3577 100644 (file)
@@ -151,7 +151,7 @@ Tie::do_post_processing()
 void
 Tie::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  Note_head *new_l =n?(Note_head*)dynamic_cast <Item *> (n):0;
+  Note_head *new_l =n?dynamic_cast<Note_head *> (n):0;
   if (dynamic_cast <Item *> (o) == head_l_drul_[LEFT])
     head_l_drul_[LEFT] = new_l;
   else if (dynamic_cast <Item *> (o) == head_l_drul_[RIGHT])
index f79dab5ac9384c89fc7394ca3d2635b314b7ff89..3f5a3c5d6dab291e565f3ea8ad58ae208c52394e 100644 (file)
@@ -28,10 +28,7 @@ Ties_engraver::do_post_move_processing()
 bool
 Ties_engraver::do_try_request (Request*req)
 {
-  if (! dynamic_cast <Musical_req *> (req))
-      return false;
-
-  if(Tie_req * r=  dynamic_cast <Tie_req *> (req))
+  if (Tie_req * r = dynamic_cast <Tie_req *> (req))
     {  
       req_l_ = r;
       return true;
@@ -45,9 +42,8 @@ Ties_engraver::acknowledge_element (Score_element_info i)
 {
   if (!req_l_ && ! end_req_l_)
     return;
-  if (i.elem_l_->is_type_b (Note_head::static_name ()))
+  if (Note_head * h = dynamic_cast <Note_head *> (i.elem_l_))
     {
-      Note_head * h = dynamic_cast <Note_head *> (i.elem_l_);
       Melodic_req *m = dynamic_cast <Melodic_req *> (i.req_l_);
       
       head_mel_tuple_arr_.push (Head_melodic_tuple (h, m));
index 89e29e61ed882bebbf8eac0e32c8c2a94e03ea1e..35743ad24f253c9bcd48f5ed55fffae61897d625 100644 (file)
@@ -21,7 +21,7 @@ void
 Time_signature_engraver::do_process_requests()
 {
   Translator * result =
-    daddy_grav_l()->get_simple_translator (Timing_engraver::static_name());
+    daddy_grav_l()->get_simple_translator (Timing_engraver::static_name ());   // ugh
 
   if (!result)
     {
@@ -30,12 +30,12 @@ Time_signature_engraver::do_process_requests()
       return ;
     }
   
-  Timing_engraver * timing_grav_l= (Timing_engraver*) dynamic_cast <Engraver *> (result);
+  Timing_engraver * timing_grav_l= dynamic_cast<Timing_engraver *> (result);
   
   Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
   if (req)
     {
-      Array<Scalar> args;
+      Array<Real> args;
       args.push (req->beats_i_);
       args.push (req->one_beat_i_);
        
index 316f31d52363d3a00fac0cd6df8a1e0511a00aa7..856525785b8b65cbc8dd8331ee864462dc6f0895 100644 (file)
@@ -20,24 +20,27 @@ Timing_translator::Timing_translator ()
 bool
 Timing_translator::do_try_request(Request*r)
 {
-  Command_req * c = dynamic_cast <Command_req *> (r);
-  if (!(c && dynamic_cast <Timing_req *> (c)))
-    return false;
-  for (int i=0; i < timing_req_l_arr_.size (); i++)
+  if (Timing_req *t =  dynamic_cast <Timing_req *> (r))
     {
-      if (timing_req_l_arr_[i]->equal_b(r))
-       return true;
-      if (timing_req_l_arr_[i]->name() == r->name())
+      for (int i=0; i < timing_req_l_arr_.size (); i++)
        {
-         r->warning (_ ("conflicting timing request"));
-         return false;
+         if (timing_req_l_arr_[i]->equal_b(t))
+           return true;
+         if (timing_req_l_arr_[i]->name() == r->name())
+           {
+             r->warning (_ ("conflicting timing request"));
+             return false;
+           }
        }
+    
+      timing_req_l_arr_.push(t);
+      return true;
     }
-
-  timing_req_l_arr_.push(dynamic_cast <Timing_req *> (c));
-  return true;
+  return false;
 }
 
+/*ugh.
+ */
 Time_signature_change_req*
 Timing_translator::time_signature_req_l() const
 {
@@ -55,8 +58,8 @@ Timing_translator::do_process_requests()
   for (int i=0; i < timing_req_l_arr_.size (); i++)
     {
       Timing_req * tr_l = timing_req_l_arr_[i];
-      Time_signature_change_req *m_l = dynamic_cast <Time_signature_change_req *> (tr_l);
-      if (m_l)
+
+      if (Time_signature_change_req *m_l = dynamic_cast <Time_signature_change_req *> (tr_l))
        {
          int b_i= m_l->beats_i_;
          int o_i = m_l->one_beat_i_;
@@ -69,9 +72,9 @@ Timing_translator::do_process_requests()
                Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)), b_i);
            }
        }
-      else if (dynamic_cast <Partial_measure_req *> (tr_l))
+      else if (Partial_measure_req *pm = dynamic_cast <Partial_measure_req *> (tr_l))
        {
-         Moment m = dynamic_cast <Partial_measure_req *> (tr_l)->duration_;
+         Moment m = pm->duration_;
          String error = time_.try_set_partial_str (m);
          if (error.length_i ())
            {
@@ -92,15 +95,15 @@ Timing_translator::do_process_requests()
            }
 
        }
-      else if (dynamic_cast <Cadenza_req *> (tr_l))
+      else if (Cadenza_req *cr = dynamic_cast <Cadenza_req *> (tr_l))
        {
-         time_.set_cadenza (dynamic_cast <Cadenza_req *> (tr_l)->on_b_);
+         time_.set_cadenza (cr->on_b_);
        }
-      else if (dynamic_cast <Measure_grouping_req *> (tr_l))
+      else if (Measure_grouping_req *mg=dynamic_cast <Measure_grouping_req *> (tr_l))
        {
          default_grouping_ =
-           parse_grouping (dynamic_cast <Measure_grouping_req *> (tr_l)->beat_i_arr_,
-                           dynamic_cast <Measure_grouping_req *> (tr_l)->elt_length_arr_);
+           parse_grouping (mg->beat_i_arr_,
+                           mg->elt_length_arr_);
 
        }
     }
@@ -112,7 +115,7 @@ Timing_translator::do_pre_move_processing()
 {
   timing_req_l_arr_.set_size (0);
   Global_translator *global_l =
-    daddy_trans_l_->ancestor_l (100)->global_l (); // ugh 100.
+    dynamic_cast<Global_translator*> (daddy_trans_l_->ancestor_l (100)); // ugh 100.
 
 
   /* allbars == ! skipbars */
index 58dceb1b1d554068569e33b6b4772b8c5f0cb36f..3ef7567af594db22b9e7fa4d01d36f0c3071c918 100644 (file)
@@ -17,9 +17,9 @@ Type_swallow_translator::Type_swallow_translator ()
 bool
 Type_swallow_translator::do_try_request (Request*r)
 {
-  if (type_&&r->is_type_b (type_))
-      return true;
-  return false;
+  //  if (type_ && type_->before (typeid( *r))) // 
+  //  return true;
+  return false;                        // ugh. FIXME.
 }
 
 IMPLEMENT_IS_TYPE_B1(Type_swallow_translator, Translator);
index 2f56e3b7b3e013f9f3d07dba16b87f0a03e0acb0..a270ad7a9f7b248045a483baf937ad3fa89ff471 100644 (file)
@@ -48,7 +48,7 @@ void
 Vertical_align_engraver::acknowledge_element (Score_element_info i)
 {
   if (i.origin_grav_l_arr_.size() == 1 && 
-      i.elem_l_->is_type_b (Vertical_group_spanner::static_name()) &&
+      dynamic_cast<Vertical_group_spanner *> (i.elem_l_) &&
       !i.elem_l_->axis_group_l_a_[Y_AXIS]) 
     {
       assert (!valign_p_->contains_b (i.elem_l_));
index 8c90d01de8ae2936c3f29f967cff677d31c7772b..a8cc0afc3a8cc72d4a307cb74c7512e0b80a55bd 100644 (file)
@@ -21,7 +21,7 @@ include-flower = $(depth)/flower/include
 
 
 
-LILYPOND_INCLUDES = $(include-lib) $(depth)/lib/$(outdir) $(include-flower) $(depth)/flower/$(outdir) 
+LILYPOND_INCLUDES = -Istinho $(include-lib) $(depth)/lib/$(outdir) $(include-flower) $(depth)/flower/$(outdir) 
 
 
 # should use to create .spec ?
index 628a2a9f78165a10a6482871fc61a68f91dff099..ae6073e89cbd18abe6595e4d291b69846a5dce09 100644 (file)
@@ -10,7 +10,7 @@ depth = .
 #
 SUBDIRS = scripts buildscripts  flower lib lily mf mi2mu po debian \
        Documentation init input tex make mutopia test intl stepmake\
-       ps
+       ps 
 #
 
 SCRIPTS = configure aclocal.m4
index ee6d05a22938dffc670d2335678df600fe3fda2d..f8b10a9080a0f07e8a456607c1e9f8c4f30a0dc9 100644 (file)
@@ -14,7 +14,7 @@
 #  - rewrite in python
 
 program_name = 'convert-mudela'
-version = '0.3'
+version = '0.4'
 
 
 import os
@@ -319,6 +319,10 @@ def do_one_file (infile_name):
                outfile.close ()
 
        if __main__.edit:
+               try:
+                       os.remove(infile_name + '~')
+               except:
+                       pass
                os.rename (infile_name, infile_name + '~')
                os.rename (infile_name + '.NEW', infile_name)
 
index e299418333564ca14e209b4f5120352eb43bf919..45574a1824884ab04386b845ee18f98a380d1c81 100644 (file)
@@ -40,10 +40,7 @@ distdir=/tmp/${name}
 
 rm -f ${srcdir}/config.cache
 PYTHON=${PYTHON:-python} ${srcdir}/configure --prefix=${distdir} \
-    --srcdir=${srcdir} \
-    --enable-tex-prefix=${distdir}/texmf \
-    --enable-tex-dir=${distdir}/texmf/tex \
-    --enable-mf-dir=${distdir}/texmf/mf
+    --srcdir=${srcdir}
 
 if ! make ; then
     echo "make failed"
@@ -80,7 +77,7 @@ cp $CYGWIN_LIB $distdir/bin
 #
 # Rename python files to <filename>.py
 #
-mv $distdir/bin/ly2dvi32 $distdir/bin/ly2dvi.py
+mv $distdir/bin/ly2dvi $distdir/bin/ly2dvi.py
 mv $distdir/bin/convert-mudela $distdir/bin/convert-mudela.py
 mv $distdir/bin/mudela-book $distdir/bin/mudela-book.py
 
@@ -89,7 +86,7 @@ mv $distdir/bin/mudela-book $distdir/bin/mudela-book.py
 #
 mkdir $distdir/doc
 cp Documentation/man/out/*.txt $distdir/doc
-mv $distdir/doc/ly2dvi32.txt $distdir/doc/ly2dvi_py.txt
+mv $distdir/doc/ly2dvi32.txt $distdir/doc/ly2dvi.txt
 cd $distdir/..
 $ZIP_CMD $ZIP_FILE $name
 echo "Wrote $ZIP_FILE"
index d4b8c470d997660bc94f75de2509de8915abfcd2..70b59f7e5bfe396e9af2ab3445140109b621c7a9 100644 (file)
@@ -19,8 +19,8 @@ INL_FILES := $(wildcard *.icc)
 YY_FILES := $(wildcard *.yy)
 LL_FILES := $(wildcard *.ll)
 
-SOURCE_FILES+=$(YY_FILES) $(CC_FILES) $(INL_FILES) $(TCC_FILES) $(HH_FILES) $(LL_FILES)
-O_FILES+=$(addprefix $(outdir)/, $(YY_FILES:.yy=.o) $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o))
+SOURCE_FILES+= $(CC_FILES) $(YY_FILES) $(INL_FILES) $(TCC_FILES) $(HH_FILES) $(LL_FILES)
+O_FILES+=$(addprefix $(outdir)/, $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o) $(YY_FILES:.yy=.o))
 
 TAGS_FILES += $(TCC_FILES) $(HH_FILES) $(INL_FILES) $(CC_FILES)
 
index 811dd0d3a29fa916fc2b0a104ec86e50126e1d74..5f8b78d86e93e1e862cba0a26c2574c609c08c40 100644 (file)
@@ -84,7 +84,7 @@ date := $(shell date +%x)     #duplicated?
 #
 ARFLAGS = ru
 
-INCLUDES =  include $(outdir) $($(PACKAGE)_INCLUDES)
+INCLUDES =  include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
 
 # urg: for windows ?
 # LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) -lstdc++