X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fstd-vector.hh;h=589f7c0db2063a2110241668c5d2ac7ba39d39ce;hb=15fe97c11d40bf1355edf1aa8584b48e1c5d8584;hp=3940c938ad807bc51422bad9a114c64c482da06d;hpb=41e45dd730c075e78065dfa78e5e54be664d905e;p=lilypond.git diff --git a/flower/include/std-vector.hh b/flower/include/std-vector.hh index 3940c938ad..589f7c0db2 100644 --- a/flower/include/std-vector.hh +++ b/flower/include/std-vector.hh @@ -1,9 +1,20 @@ /* - std-vector.hh -- declare vector + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2006--2015 Jan Nieuwenhuizen - (c) 2006--2007 Jan Nieuwenhuizen + 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 . */ #ifndef STD_VECTOR_HH @@ -14,11 +25,12 @@ /* leads to dubious crashes - libstdc++ bug? */ -#ifndef NDEBUG +#ifdef DEBUG #define _GLIBCXX_DEBUG 1 #endif #endif +#include "config.hh" /* needed at least for HAVE_STL_DATA_METHOD */ #include /* find, reverse, sort */ #include /* unary_function */ #include @@ -26,10 +38,6 @@ using namespace std; -#if HAVE_BOOST_LAMBDA_LAMBDA_HPP -#include -#endif - template int default_compare (T const &a, T const &b) { @@ -60,51 +68,7 @@ typedef size_t vsize; #define VPOS ((vsize) -1) #endif -#if HAVE_STL_DATA_METHOD -#include -#else /* !HAVE_STL_DATA_METHOD */ -#define vector __vector #include -#undef vector - -namespace std { - - /* Interface without pointer arithmetic (iterator) semantics. */ - template > - class vector : public __vector - { - public: - typedef typename __vector::iterator iterator; - typedef typename __vector::const_iterator const_iterator; - - vector () : __vector () - { - } - - vector (vector const& v) : __vector (v) - { - } - - vector (const_iterator b, const_iterator e) : __vector (b, e) - { - } - - T* - data () - { - return &(*this)[0]; - } - - T const* - data () const - { - return &(*this)[0]; - } - }; - -} /* namespace std */ - -#endif /* !HAVE_STL_DATA_METHOD */ template T const & @@ -130,7 +94,7 @@ back (vector const &v, vsize i) } template -T& +T & back (vector &v, vsize i) { return v[v.size () - i - 1]; @@ -138,7 +102,7 @@ back (vector &v, vsize i) template void -concat (vector &v, vector const& w) +concat (vector &v, vector const &w) { v.insert (v.end (), w.begin (), w.end ()); } @@ -146,16 +110,16 @@ concat (vector &v, vector const& w) template vsize lower_bound (vector const &v, - T const &key, - Compare less, - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); typename vector::const_iterator i = lower_bound (v.begin () + b, - v.begin () + e, - key, - less); + v.begin () + e, + key, + less); return i - v.begin (); } @@ -163,17 +127,17 @@ lower_bound (vector const &v, template vsize upper_bound (vector const &v, - T const &key, - Compare less, - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); typename vector::const_iterator i = upper_bound (v.begin () + b, - v.begin () + e, - key, - less); + v.begin () + e, + key, + less); return i - v.begin (); } @@ -181,9 +145,9 @@ upper_bound (vector const &v, template vsize binary_search (vector const &v, - T const &key, - Compare less=less (), - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { vsize lb = lower_bound (v, key, less, b, e); @@ -195,8 +159,8 @@ binary_search (vector const &v, template void vector_sort (vector &v, - Compare less, - vsize b=0, vsize e=VPOS) + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); @@ -227,21 +191,9 @@ find (vector const &v, T const &key) return find (v.begin (), v.end (), key); } -#if HAVE_BOOST_LAMBDA_LAMBDA_HPP -#include -using namespace boost::lambda; -template -void -junk_pointers (vector &v) -{ - for_each (v.begin (), v.end (), (delete _1, _1 = 0)); - v.clear (); -} -#else - template struct del : public unary_function { - void operator() (T x) + void operator () (T x) { delete x; x = 0; @@ -256,10 +208,9 @@ junk_pointers (vector &v) for_each (v.begin (), v.end (), del ()); v.clear (); } -#endif /* HAVE_BOOST_LAMBDA */ vector string_split (string str, char c); -string string_join (vector const &strs, string infix); +string string_join (vector const &strs, const string &infix); #define iterof(i,s) typeof((s).begin()) i((s).begin())