+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.
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.
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)
{
(*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 ();
};
#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)
{
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);
}
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
{
}
/* 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
{
#endif
#include "std-vector.hh"
+#include "parray.hh"
+
#include <iostream>
#include <boost/test/auto_unit_test.hpp>
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;
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*
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;
}
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);
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 ();
}
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
warning (_ ("no placement found for fingerings"));
warning (_ ("placing below"));
}
- down.concat (*scripts);
+ down.insert (down.end (), scripts->begin (), scripts->end ());
scripts->clear ();
}