From: Jan Nieuwenhuizen Date: Wed, 1 Feb 2006 00:09:15 +0000 (+0000) Subject: * flower/include/std-vector.hh (del): Remove. Use erase (), X-Git-Tag: release/2.7.31~31 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c2adb6159c233a9ef3f8a22ab25342e15bd10c8b;p=lilypond.git * flower/include/std-vector.hh (del): Remove. Use erase (), update callers. * flower/include/array.hh (begin, end): Add. (del, get): Remove. --- diff --git a/ChangeLog b/ChangeLog index 91a89e14d0..4379998871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-02-01 Jan Nieuwenhuizen + + * flower/include/std-vector.hh (del): Remove. Use erase (), + update callers. + + * flower/include/array.hh (begin, end): Add. + (del, get): Remove. + 2006-02-01 Han-Wen Nienhuys * lily/prob.cc (Prob): copy type_ too. diff --git a/flower/include/array.hh b/flower/include/array.hh index 400aeea233..9a5b2e4026 100644 --- a/flower/include/array.hh +++ b/flower/include/array.hh @@ -109,8 +109,75 @@ public: size_ = s; } + T* + data () + { + return array_; + } + + typedef T* iterator; + + iterator + begin () + { + return data (); + } + + iterator const + begin () const + { + return data (); + } + + iterator + end () + { + return data () + size_; + } + + iterator const + end () const + { + return data () + size_; + } + + void clear () + { + resize (0); + } + + /* std::vector uses unchecked variant for [] */ + T &operator [] (vsize i) + { + return elem_ref (i); + } + + /* std::vector uses unchecked variant for [] */ + T const &operator [] (vsize i) const + { + return elem_ref (i); + } + + iterator + erase (iterator p) + { + vsize i = p - data (); +#if !STD_VECTOR + assert (i >= 0 && i < size_); +#else + assert (i < size_); +#endif + arrcpy (array_ + i, array_ + i + 1, size_ - i - 1); + size_--; + return p; + } + + + /* Flower intererface */ + + /// check invariants void OK () const; /** report the size_. @@ -118,12 +185,6 @@ public: {setsize_} */ - /// POST: size () == 0 - void clear () - { - size_ = 0; - } - Array (T *tp, vsize n) { array_ = new T[n]; @@ -169,16 +230,6 @@ public: T *remove_array (); - /// access element - T &operator [] (vsize i) - { - return elem_ref (i); - } - /// access element - T const &operator [] (vsize i) const - { - return elem_ref (i); - } /// access element T &elem_ref (vsize i) const { @@ -251,30 +302,12 @@ public: } void insert (T k, vsize j); - /** - remove i-th element, and return it. - */ - T get (vsize i) - { - T t = elem (i); - del (i); - return t; - } + void unordered_del (vsize i) { elem_ref (i) = back (); resize (size () -1); } - void del (vsize i) - { -#if !STD_VECTOR - assert (i >= 0 && i < size_); -#else - assert (i < size_); -#endif - arrcpy (array_ + i, array_ + i + 1, size_ - i - 1); - size_--; - } // quicksort. void sort (int (*compare) (T const &, T const &), vsize lower=VPOS, vsize upper=VPOS); diff --git a/flower/include/parray.hh b/flower/include/parray.hh index 4378dda8b8..40dcb22305 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -41,15 +41,18 @@ public: return (T *&) Array::back (); } - /* Flower compat */ - Array::del; - Array::unordered_del; - Array::size; + Array::begin; Array::clear; + Array::erase; Array::resize; + Array::size; Array::empty; - Array::reverse; Array::pop_back; + + + /* Flower compat */ + Array::unordered_del; + Array::reverse; Array::tighten_maxsize; static int default_compare (T *const &p1, T *const &p2) @@ -122,7 +125,7 @@ public: if (new_p) elem_ref (i) = new_p; else - del (i); + erase (begin () + i); } void unordered_substitute (T *old, T *new_p) { @@ -137,6 +140,7 @@ public: { sort (default_compare); } + // quicksort. void sort (int (*compare) (T *const &, T *const &), int lower = -1, int upper = -1); @@ -171,9 +175,14 @@ public: { return (T **) Array::accesses (); } - T *get (int i) + /** + remove i-th element, and return it. + */ + T *get (vsize i) { - return (T *) Array::get (i); + T *t = elem (i); + Array::erase (Array::begin () + i); + return t; } Link_array slice (int l, int u) const @@ -268,8 +277,8 @@ binsearch (Array const &arr, T t, int (*compare) (T const &, T const &)) if (!compare (t, arr[lo])) return lo; - else - return -1; /* not found */ + /* not found */ + return -1; } template @@ -301,8 +310,8 @@ binsearch_links (Link_array const &arr, T *t, if (!compare (t, arr[lo])) return lo; - else - return -1; /* not found */ + /* not found */ + return -1; } template diff --git a/flower/include/std-vector.hh b/flower/include/std-vector.hh index 8fda47c8b2..ce88a5d628 100644 --- a/flower/include/std-vector.hh +++ b/flower/include/std-vector.hh @@ -41,7 +41,6 @@ namespace std { { public: typedef typename __vector::iterator iterator; - //typedef int (*compare) (T *const&, T *const&); vector () : __vector () { @@ -108,12 +107,6 @@ namespace std { return this->at (i); } - T - del (vsize i) - { - return *__vector::erase (iter (i)); - } - T const & elem (vsize i) const { diff --git a/flower/interval-set.cc b/flower/interval-set.cc index 7c8bd0e6a1..2073afda61 100644 --- a/flower/interval-set.cc +++ b/flower/interval-set.cc @@ -52,7 +52,7 @@ Interval_set::remove_interval (Interval rm) allowed_regions_.insert (before, i); i++; } - allowed_regions_.del (i); + allowed_regions_.erase (allowed_regions_.begin () + i); if (!after.is_empty () && after.length () > 0.0) { allowed_regions_.insert (after, i); diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc index 2a3af602c1..b240dfa032 100644 --- a/lily/accidental-engraver.cc +++ b/lily/accidental-engraver.cc @@ -462,7 +462,7 @@ Accidental_engraver::stop_translation_timestep () g->set_object ("tie", ties_[j]->self_scm ()); accidentals_[i].tied_ = true; } - ties_.del (j); + ties_.erase (ties_.begin () + j); break; } } diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 85074a4cf3..2355ce11f4 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -110,7 +110,7 @@ Align_interface::align_to_fixed_distance (Grob *me, Axis a) Hara_kiri_group_spanner::consider_suicide (elems[j]); if (!elems[j]->is_live ()) - elems.del (j); + elems.erase (elems.begin () + j); } for (vsize j = 0; j < elems.size (); j++) diff --git a/lily/beam-concave.cc b/lily/beam-concave.cc index 00ceb61dcd..81581bc66b 100644 --- a/lily/beam-concave.cc +++ b/lily/beam-concave.cc @@ -97,7 +97,7 @@ Beam::calc_concaveness (SCM smob) for (vsize i = stems.size (); i--;) { if (Stem::is_invisible (stems[i])) - stems.del (i); + stems.erase (stems.begin () + i); else { if (Direction dir = get_grob_direction (stems[i])) diff --git a/lily/bezier.cc b/lily/bezier.cc index 193018f210..47d0184329 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -174,7 +174,7 @@ filter_solutions (std::vector sol) { for (vsize i = sol.size (); i--;) if (sol[i] < 0 || sol[i] > 1) - sol.del (i); + sol.erase (sol.begin () + i); return sol; } diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc index abe15eea2f..662ae54d1b 100644 --- a/lily/break-algorithm.cc +++ b/lily/break-algorithm.cc @@ -27,7 +27,7 @@ Break_algorithm::find_break_indices () const if (linewidth_ <= 0) while (retval.size () > 2) - retval.del (1); + retval.erase (retval.begin () + 1); return retval; } @@ -44,7 +44,7 @@ Break_algorithm::find_breaks () const if (linewidth_ <= 0) while (retval.size () > 2) - retval.del (1); + retval.erase (retval.begin () + 1); return retval; } diff --git a/lily/break-align-interface.cc b/lily/break-align-interface.cc index 3aff11a20e..ac5cfa33f3 100644 --- a/lily/break-align-interface.cc +++ b/lily/break-align-interface.cc @@ -74,7 +74,7 @@ Break_align_interface::ordered_elements (Grob *grob) if (g && sym == g->get_property ("break-align-symbol")) { new_elts.push_back (g); - writable_elts.del (i); + writable_elts.erase (writable_elts.begin () + i); } } } diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 78dbcabb4c..84f56b6418 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -230,7 +230,7 @@ Dot_column::calc_positioning_done (SCM smob) dots.sort (compare_position); for (vsize i = dots.size (); i--;) if (!dots[i]->is_live ()) - dots.del (i); + dots.erase (dots.begin () + i); Dot_configuration cfg; for (vsize i = 0;i < dots.size (); i++) diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index 9c1bb10d7d..23d735ec9f 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -216,7 +216,7 @@ New_fingering_engraver::position_scripts (SCM orientations, if (to_dir (d)) { ((to_dir (d) == UP) ? up : down).push_back ((*scripts)[i]); - scripts->del (i); + scripts->erase (scripts->begin () + i); } } @@ -238,7 +238,7 @@ New_fingering_engraver::position_scripts (SCM orientations, if (down_p && !down.size () && scripts->size ()) { down.push_back ((*scripts)[0]); - scripts->del (0); + scripts->erase (scripts->begin ()); } horiz.concat (*scripts); diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index 8206b3b4e9..78b1bcaf4a 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -227,7 +227,7 @@ Note_spacing::right_column (Grob *me) for (vsize i = right.size (); i--;) { if (dynamic_cast (right[i])->get_column () != mincol) - right.del (i); + right.erase (right.begin () + i); } } diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 3094f81759..5688d49e61 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -164,9 +164,8 @@ Paper_column::before_line_breaking (SCM grob) Grob *g = array[i]; if (!g || !g->is_live ()) - { // UGH . potentially quadratic. - array.del (i); - } + /* UGH . potentially quadratic. */ + array.erase (array.begin () + i); } return SCM_UNSPECIFIED; diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index 646c7e79d4..1177347f09 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -440,7 +440,7 @@ Piano_pedal_engraver::del_linespanner (Spanner *g) { int idx = previous_.find_index (g); if (idx >= 0) - previous_.del (idx); + previous_.erase (previous_.begin () + idx); } void diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index a52a2c73b3..9ec95d91a1 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -121,7 +121,7 @@ Tie_engraver::acknowledge_note_head (Grob_info i) Tie::set_head (p, RIGHT, h); ties_.push_back (p); - heads_to_tie_.del (i); + heads_to_tie_.erase (heads_to_tie_.begin () + i); } } diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 3d24023e41..5ad157de11 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -166,7 +166,7 @@ Tuplet_engraver::start_translation_timestep () } if (now.main_part_ >= tuplets_[i].stop_) - tuplets_.del (i); + tuplets_.erase (tuplets_.begin () + i); } }