* flower/include/array.hh (reverse, swap): Detach from class.
Update users.
* 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 Jan Nieuwenhuizen <janneke@gnu.org>
+ * flower/include/std-vector.hh
+ * flower/include/array.hh (reverse, swap): Detach from class.
+ Update users.
+
* flower/include/std-vector.hh
* flower/include/array.hh (concat): Globally change to insert ().
+
* flower/include/std-vector.hh
* flower/include/parray.hh
arrcpy (array_, src.array_, size_);
}
- T *remove_array ();
-
/// access last entry
T &top (vsize j)
{
else
return at (idx);
}
- void swap (vsize i, vsize j)
- {
- T t ((*this)[i]);
- (*this)[i] = (*this)[j];
- (*this)[j] = t;
- }
void unordered_del (vsize i)
{
at (i) = back ();
resize (size () -1);
}
- void reverse ();
};
+#if 0
+ template<class T>
+ void
+ swap (T *a, T *b)
+ {
+ T t = *a;
+ *a = *b;
+ *b = t;
+ }
+#endif
+
+ template<class T>
+ void
+ reverse (Array<T> &v)
+ {
+ vsize h = v.size () / 2;
+ for (vsize i = 0, j = v.size () - 1; i < h; i++, j--)
+ swap (v[i], v[j]);
+ }
+
#include "array.icc"
}
}
if (lower >= upper)
return;
- v.swap (lower, (lower + upper) / 2);
+ swap (v[lower], v[(lower + upper) / 2]);
vsize last = lower;
for (vsize i = lower +1; i <= upper; i++)
if (compare (v.array_[i], v.array_[lower]) < 0)
- v.swap (++last, i);
- v.swap (lower, last);
+ swap (v[++last], v[i]);
+ swap (v[lower], v[last]);
vector_sort (v, compare, lower, last - 1);
vector_sort (v, compare, last + 1, upper);
}
-template<class T> INLINE void
-Array<T>::reverse ()
-{
- vsize h = size_ / 2;
- for (vsize i = 0, j = size_ - 1; i < h; i++, j--)
- swap (i, j);
-}
-
template<class T> INLINE
void
Array<T>::OK () const
assert (array_);
}
-template<class T> INLINE
-T *
-Array<T>::remove_array ()
-{
- T *p = array_;
- size_ = 0;
- max_ = 0;
- array_ = 0;
- return p;
-}
-
template<class T> INLINE
Array<T>::Array (const_iterator b, const_iterator e)
{
/* Flower compat */
Array<void *>::unordered_del;
- Array<void *>::reverse;
Array<void *>::tighten_maxsize;
static int default_compare (T *const &p1, T *const &p2)
else
return 0;
}
+
+ void swap (vsize i, vsize j)
+ {
+ T *t ((*this)[i]);
+ (*this)[i] = (*this)[j];
+ (*this)[j] = t;
+ }
+ void
+ reverse ()
+ {
+ vsize h = size () / 2;
+ for (vsize i = 0, j = size () - 1; i < h; i++, j--)
+ swap (i, j);
+ }
};
template<class T, class V>
while (*hi - *lo > 1);
}
+
#endif // PARRAY_HH
return this->at (i);
}
- T *
- remove_array ()
- {
- T *p = &(*this)[0];
- /* FIXME: forget array? */
- /* this->resize (0); */
- return p;
- }
-
- void
- reverse ()
- {
- // CHECKME: for a simple vector, like vector<int>, this should
- // expand to memrev.
- ::std::reverse (this->begin (), this->end ());
- }
-
- void swap (vsize i, vsize j)
- {
- T t ((*this)[i]);
- (*this)[i] = (*this)[j];
- (*this)[j] = t;
- }
-
T const &
top (vsize i) const
{
::std::sort (b + lower, e + upper, compare);
}
#else
+
+ template<typename T>
+ void
+ swap (T *a, T *b)
+ {
+ T t = *a;
+ *a = *b;
+ *b = t;
+ }
+
// ugh, c&p
template<typename T> void
vector_sort (vector<T> &v, int (*compare) (T const &, T const &),
}
if (upper == VPOS || lower >= upper)
return;
- v.swap (lower, (lower + upper) / 2);
+ swap (v[lower], v[(lower + upper) / 2]);
vsize last = lower;
for (vsize i = lower +1; i <= upper; i++)
if (compare (v[i], v[lower]) < 0)
- v.swap (++last, i);
- v.swap (lower, last);
+ swap (v[++last], v[i]);
+ swap (v[lower], v[last]);
vector_sort (v, compare, lower, last - 1);
vector_sort (v, compare, last + 1, upper);
}
-
+
+ template<typename T>
+ void
+ reverse (vector<T> &v)
+ {
+ // CHECKME: for a simple vector, like vector<int>, this should
+ // expand to memrev.
+ ::std::reverse (v.begin (), v.end ());
+ }
+
#endif
}
vector_sort (full_beams, default_compare);
if (stem_dir == UP)
- full_beams.reverse ();
+ reverse (full_beams);
}
int k = 0;
}
}
- bottom_points.reverse ();
- top_points.reverse ();
+ reverse (bottom_points);
+ reverse (top_points);
Stencil out = brew_cluster_piece (me, bottom_points, top_points);
out.translate_axis (- me->relative_coordinate (commony, Y_AXIS), Y_AXIS);
Link_array<char> newline_locations_;
istream *istream_;
char *contents_str0_;
+ std::vector<char> chs_;
int length_;
void load_stdin ();
void init_port ();
Source_file::load_stdin ()
{
length_ = 0;
-
+ chs_.clear ();
int c;
-#if STD_VECTOR
- std::vector<char> &chs = *new std::vector<char>; // ugh. ugh.
-#else
- std::vector<char> chs; // ugh.
-#endif
-
while ((c = fgetc (stdin)) != EOF)
- chs.push_back (c);
+ chs_.push_back (c);
- chs.push_back (0);
- length_ = chs.size ();
- contents_str0_ = chs.remove_array ();
+ chs_.push_back (0);
+ length_ = chs_.size ();
+ contents_str0_ = &chs_[0];
}
char *