]> git.donarmstrong.com Git - lilypond.git/commitdiff
* flower/include/std-vector.hh
authorjanneke <janneke>
Thu, 2 Feb 2006 14:00:45 +0000 (14:00 +0000)
committerjanneke <janneke>
Thu, 2 Feb 2006 14:00:45 +0000 (14:00 +0000)
* flower/include/parray.hh
* flower/include/array.hh (elem, elem_ref): Globally replace by
at ().

ChangeLog
flower/include/array.hh
flower/include/array.icc
flower/include/parray.hh
flower/include/std-vector.hh
flower/test-std.cc
lily/accidental-placement.cc
lily/beaming-info.cc
lily/new-fingering-engraver.cc

index 560d7cd2ee6c7e92a981be6d9d4addb8083ddd08..244399ea03e0189529c8adc972f0e18c6693ba09 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-02-02  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * flower/include/std-vector.hh
+       * flower/include/array.hh (concat): Globally change to insert ().
+       
+       * flower/include/std-vector.hh
+       * flower/include/parray.hh
+       * flower/include/array.hh (elem, elem_ref): Globally replace by
+       at ().
+
 2006-02-02  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * Documentation/topdocs/NEWS.tely (Top): use ly: prefix for members.
index d25f34c346e995460ac31f59ecc8c99dc005c9be..8a941c13aab70cf8ac176bf620326618c5bfc6bd 100644 (file)
@@ -25,7 +25,7 @@ using namespace std;
 
 namespace std {
 /// copy a bare (C-)array from #src# to #dest# sized  #count#
-template<class T> void arrcpy (T *dest, T const *src, int count);
+template<class T> void arrcpy (T *dest, T const *src, vsize count);
 
 /**
    Scaleable array/stack template, for a type T with default constructor.
@@ -195,6 +195,29 @@ public:
     return p;
   }
 
+  void
+  insert (iterator b, T k)
+  {
+    vsize j = b - array_;
+    resize (size_ + 1);
+    index_assert (j);
+    for (vsize i = size_ - 1; i > j; i--)
+      array_[i] = array_[i - 1];
+    array_[j] = k;
+  }
+
+  void
+  insert (iterator pos, const_iterator b, const_iterator e)
+  {
+    vsize j = pos - array_;
+    vsize k = e - b;
+    resize (size_ + k);
+    for (vsize i = size_ - 1; i > j + k; i--)
+      array_[i] = array_[i - k];
+    for (vsize i = j; i < j + k; i++)
+      array_[i] = b[i - j];
+  }
+
   /// add to the end of array
   void push_back (T x)
   {
@@ -296,19 +319,11 @@ public:
     (*this)[j] = t;
   }
 
-  void insert (iterator j, T k);
-
   void unordered_del (vsize i)
   {
     at (i) = back ();
     resize (size () -1);
   }
-  void concat (Array<T> const &src)
-  {
-    vsize s = size_;
-    resize (size_ + src.size_);
-    arrcpy (array_ + s, src.array_, src.size_);
-  }
   void reverse ();
 };
 
index 0d1c0ead72f52ffec5cdbb30aa87d08045e5327a..924646df5a87b75fda3396eaa171d4efa82621f3 100644 (file)
@@ -37,21 +37,6 @@ arrcpy (T *dest, T const *src, vsize count)
 #endif
 }
 
-template<class T> INLINE void
-Array<T>::insert (iterator b, T k)
-{
-  vsize j = b - array_;
-#if !STD_VECTOR
-    assert (j >= 0 && j <= size_);
-#else
-    assert (j <= size_);
-#endif
-  resize (size_ + 1);
-  for (vsize i = size_ - 1; i > j; i--)
-    array_[i] = array_[i - 1];
-  array_[j] = k;
-}
-
 template<typename T> INLINE void
 vector_sort (Array<T> &v, int (*compare) (T const &, T const &),
             vsize lower=-1, vsize upper=-1)
index 80145929e141f04d996b837a73c5d3e5cdc8e9a6..e85c1d9f73a1dc636168cf330e6650c8b6fa89da 100644 (file)
@@ -104,6 +104,10 @@ public:
   {
     Array<void *>::insert (b, t);
   }
+  void insert (iterator pos, const_iterator b, const_iterator e)
+  {
+    Array<void *>::insert (pos, b, e);
+  }
   void push_back (T *t)
   {
     Array<void *>::push_back (t);
@@ -192,7 +196,7 @@ public:
   }
   void concat (Link_array<T> const &a2)
   {
-    Array<void *>::concat (a2);
+    Array<void *>::insert (end (), a2.begin (), a2.end ());
   }
   int find_index (T const *t) const
   {
index 7c957202621b63e7d002bce5f503bbd05ba9db3a..c70c9449a9e4313e1c4e28d857542c94ae87d22f 100644 (file)
@@ -52,12 +52,6 @@ namespace std {
     }
 
     /* Flower-Array compatibility.  */
-    void
-    concat (vector<T> const &v)
-    {
-      __vector<T>::insert (this->end (), v.begin (), v.end ());
-    }
-
     T const &
     boundary (int dir, vsize i) const
     {
index bd79ffd95e6d6ff0d7ac7b00694e4cab3c6fceaa..72e86f110afef40499396116a34431dfd4a6672e 100644 (file)
@@ -3,6 +3,8 @@
 #endif
 #include "std-vector.hh"
 
+#include "parray.hh"
+
 #include <iostream>
 
 #include <boost/test/auto_unit_test.hpp>
@@ -23,6 +25,16 @@ print (vector<T> v)
   cout << endl;
 }
 
+template<typename T>
+void
+print (Link_array<T> v)
+{
+  for (vsize i = 0; i < v.size (); i++)
+    cout << "v[" << i << "] = " << *v[i] << endl;
+  cout << endl;
+}
+
+
 BOOST_AUTO_UNIT_TEST (vector_erase)
 {
   vector<int> v;
@@ -91,6 +103,48 @@ BOOST_AUTO_UNIT_TEST (vector_insert)
   v.insert (v.end (), 2);
 #endif  
   BOOST_CHECK_EQUAL (v.back (), 2);
+  vector<int> u;
+  u.insert (u.begin (), v.begin (), v.end ());
+  BOOST_CHECK_EQUAL (u.size (), v.size ());
+  u.clear ();
+  u.insert (u.end (), v.begin (), v.end ());
+  BOOST_CHECK_EQUAL (u.size (), v.size ());
+  u.clear ();
+}
+
+BOOST_AUTO_UNIT_TEST (parray_concat)
+{
+  Link_array<int> u, v;
+  int a[5] = { 0, 1, 2, 3, 4 };
+  u.push_back (&a[0]);
+  u.push_back (&a[1]);
+  u.push_back (&a[2]);
+  v.push_back (&a[3]);
+  v.push_back (&a[4]);
+  u.concat (v);
+  BOOST_CHECK_EQUAL (u[0], &a[0]);
+  BOOST_CHECK_EQUAL (u[1], &a[1]);
+  BOOST_CHECK_EQUAL (u[2], &a[2]);
+  BOOST_CHECK_EQUAL (u[3], &a[3]);
+  BOOST_CHECK_EQUAL (u[4], &a[4]);
+  BOOST_CHECK_EQUAL (u.size (), vsize (5));
+  u.concat (v);
+  BOOST_CHECK_EQUAL (u.size (), vsize (7));
+
+  u.clear ();
+  v.clear ();
+  v.push_back (&a[0]);
+  v.push_back (&a[1]);
+  v.push_back (&a[2]);
+  v.push_back (&a[3]);
+  v.push_back (&a[4]);
+  u.concat (v);
+  BOOST_CHECK_EQUAL (u[0], &a[0]);
+  BOOST_CHECK_EQUAL (u[1], &a[1]);
+  BOOST_CHECK_EQUAL (u[2], &a[2]);
+  BOOST_CHECK_EQUAL (u[3], &a[3]);
+  BOOST_CHECK_EQUAL (u[4], &a[4]);
+  BOOST_CHECK_EQUAL (u.size (), vsize (5));
 }
 
 test_suite*
@@ -101,5 +155,6 @@ init_unit_test_suite (int, char**)
   test->add (BOOST_TEST_CASE (vector_slice));
   test->add (BOOST_TEST_CASE (vector_sorting));
   test->add (BOOST_TEST_CASE (vector_insert));
+  test->add (BOOST_TEST_CASE (parray_concat));
   return test;
 }
index 013887153dfc25e0d211e5b524e6e2f77fbba05b..d35089066eecb5223779204bf830f5879840bf1a 100644 (file)
@@ -305,7 +305,7 @@ Accidental_placement::calc_positioning_done (SCM smob)
 
          std::vector<Box> boxes = Accidental_interface::accurate_boxes (a, common);
 
-         ape->extents_.concat (boxes);
+         ape->extents_.insert (ape->extents_.end (), boxes.begin (), boxes.end ());
          for (vsize j = boxes.size (); j--;)
            {
              insert_extent_into_skyline (&ape->left_skyline_, boxes[j], Y_AXIS, LEFT);
index 9109aea5a726643625da16da79983b8c0e83d672..11c6dde0c6ade6947db7f4144a6c78b71fd258cf 100644 (file)
@@ -92,7 +92,7 @@ Beaming_info_list::beamify (Moment &beat_length, bool subdivide)
   while (flip (&d) != LEFT);
 
   infos_ = splits[LEFT].infos_;
-  infos_.concat (splits[RIGHT].infos_);
+  infos_.insert (infos_.end (), splits[RIGHT].infos_.begin (), splits[RIGHT].infos_.end ());
 
   clip_edges ();
 }
index 56a0c37d28afa9b58c83afcec9d831ed3c393794..1e74bbba34dc57b232d3b474701b16d6d528ccba 100644 (file)
@@ -241,19 +241,17 @@ New_fingering_engraver::position_scripts (SCM orientations,
          scripts->erase (scripts->begin ());
        }
 
-      horiz.concat (*scripts);
+      horiz.insert (horiz.end (), scripts->begin (), scripts->end ());
     }
   else if (up_p && down_p)
     {
       int center = scripts->size () / 2;
-      down.concat (std::vector<Finger_tuple> (scripts->begin (),
-                                             scripts->begin () + center));
-      up.concat (std::vector<Finger_tuple> (scripts->begin () + center,
-                                           scripts->end ()));
+      down.insert (down.end (), scripts->begin (), scripts->begin () + center);
+      up.insert (up.end (), scripts->begin () + center, scripts->end ());
     }
   else if (up_p)
     {
-      up.concat (*scripts);
+      up.insert (up.end (), scripts->begin (), scripts->end ());
       scripts->clear ();
     }
   else
@@ -263,7 +261,7 @@ New_fingering_engraver::position_scripts (SCM orientations,
          warning (_ ("no placement found for fingerings"));
          warning (_ ("placing below"));
        }
-      down.concat (*scripts);
+      down.insert (down.end (), scripts->begin (), scripts->end ());
       scripts->clear ();
     }