X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fstd-vector.hh;fp=flower%2Finclude%2Fstd-vector.hh;h=dd276df1861c3696c8a54825dca76250afbb65ba;hb=32a34dcef0c0041c6d62677487a380b5c8b85712;hp=43fed22f6846af88b99c8b8dec7f1944e9b25f55;hpb=f41973ff763d5972a85995b6d40c864281ec6714;p=lilypond.git diff --git a/flower/include/std-vector.hh b/flower/include/std-vector.hh index 43fed22f68..dd276df186 100644 --- a/flower/include/std-vector.hh +++ b/flower/include/std-vector.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Jan Nieuwenhuizen + Copyright (C) 2006--2012 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 @@ -74,40 +74,45 @@ typedef size_t vsize; #include #undef vector -namespace std { +namespace std +{ + +/* Interface without pointer arithmetic (iterator) semantics. */ +template > +class vector : public __flower_vector +{ +public: + typedef typename __flower_vector::iterator iterator; + typedef typename __flower_vector::const_iterator const_iterator; - /* Interface without pointer arithmetic (iterator) semantics. */ - template > - class vector : public __flower_vector + vector () : __flower_vector () { - public: - typedef typename __flower_vector::iterator iterator; - typedef typename __flower_vector::const_iterator const_iterator; - - vector () : __flower_vector () - { - } - - vector (vector const& v) : __flower_vector (v) - { - } - - vector (const_iterator b, const_iterator e) : __flower_vector (b, e) - { - } - - T* - data () - { - return &(*this)[0]; - } - - T const* - data () const - { - return &(*this)[0]; - } - }; + } + + vector (size_t n) : __flower_vector (n) + { + } + + vector (vector const &v) : __flower_vector (v) + { + } + + vector (const_iterator b, const_iterator e) : __flower_vector (b, e) + { + } + + T * + data () + { + return &(*this)[0]; + } + + T const * + data () const + { + return &(*this)[0]; + } +}; } /* namespace std */ @@ -137,7 +142,7 @@ back (vector const &v, vsize i) } template -T& +T & back (vector &v, vsize i) { return v[v.size () - i - 1]; @@ -145,7 +150,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 ()); } @@ -153,16 +158,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 (); } @@ -170,17 +175,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 (); } @@ -188,9 +193,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); @@ -202,8 +207,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 (); @@ -236,7 +241,7 @@ find (vector const &v, T const &key) template struct del : public unary_function { - void operator() (T x) + void operator () (T x) { delete x; x = 0;