/*
- parray.hh -- declare Pointer_array
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the Flower Library
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+*/
#ifndef PARRAY_HH
#define PARRAY_HH
-#include "varray.hh"
+#include "std-vector.hh"
-/**
- an array of pointers.
+using namespace std;
- TODO
- should init to 0. Derive from Array<void*>?
- */
template<class T>
-class Link_array : public Array<T*>
+class Link_array : public vector<T *>
{
- static default_compare (T *const& p1, T *const&p2) {
- /* can't do p1 -p2, since T might be an incomplete type */
- if (p1 < p2)
- return -1 ;
- if (p2 < p1)
- return 1;
- return 0;
- }
-public:
- void substitute (T *old, T*new_l)
- {
- int i;
- while ((i = find_i (old)) >=0)
- if (new_l)
- elem (i) =new_l;
- else
- del (i);
- }
- void unordered_substitute (T* old, T * new_l)
- {
- int i;
- while ((i = find_i (old)) >=0)
- if (new_l)
- elem (i) =new_l;
- else {
- unordered_del (i);
- }
-
- }
- void default_sort() {
- sort (default_compare);
- }
- void uniq() {
- Link_array<T> l_arr;
- for (int i=0; i < size(); i++)
- if (!i || elem (i-1) != elem (i))
- l_arr.push (elem (i));
- *this = l_arr;
- }
- int find_i (T const * t) const {
- for (int i=0; i < size(); i++)
- if (elem (i) == t)
- return i;
- return -1;
- }
- T *find_l (T const *t) const
- {
- int i = find_i (t);
- if (i >= 0)
- return elem (i);
- else
- return 0;
- }
};
#endif // PARRAY_HH
+