diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-08-01 12:52:09 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-08-01 12:54:06 +0200 |
commit | 3e3acee762fac71f7356ed1305a64e0278278081 (patch) | |
tree | d7478f0c065a577b85b6a2be64cb749b49501754 /o3tl | |
parent | 77165efb4eb4d9735f8dd4f8c99044a36d60a611 (diff) |
sorted_vector: turn Find parameter into template
Enforces same type parameters for sorted_vector and Find, and makes
it easier to use.
Change-Id: Ide456a48f015cb0a9dea7a0bf2bcf2ccad527fd1
Diffstat (limited to 'o3tl')
-rw-r--r-- | o3tl/inc/o3tl/sorted_vector.hxx | 11 | ||||
-rw-r--r-- | o3tl/qa/test-sorted_vector.cxx | 6 |
2 files changed, 8 insertions, 9 deletions
diff --git a/o3tl/inc/o3tl/sorted_vector.hxx b/o3tl/inc/o3tl/sorted_vector.hxx index 4d442dd590ae..6f444d90be14 100644 --- a/o3tl/inc/o3tl/sorted_vector.hxx +++ b/o3tl/inc/o3tl/sorted_vector.hxx @@ -27,12 +27,13 @@ struct find_unique; @tpl Compare comparison method @tpl Find look up index of a Value in the array */ -template<class Value, class Compare = std::less<Value>, - class Find = find_unique<Value, Compare> > +template<typename Value, typename Compare = std::less<Value>, + template<typename, typename> class Find = find_unique > class sorted_vector : private std::vector<Value> { private: + typedef Find<Value, Compare> Find_t; typedef typename std::vector<Value> base_t; typedef typename std::vector<Value>::iterator iterator; public: @@ -47,7 +48,7 @@ public: std::pair<const_iterator,bool> insert( const Value& x ) { - std::pair<const_iterator, bool> const ret(Find()(begin(), end(), x)); + std::pair<const_iterator, bool> const ret(Find_t()(begin(), end(), x)); if (!ret.second) { const_iterator const it = base_t::insert( @@ -59,7 +60,7 @@ public: size_type erase( const Value& x ) { - std::pair<const_iterator, bool> const ret(Find()(begin(), end(), x)); + std::pair<const_iterator, bool> const ret(Find_t()(begin(), end(), x)); if (ret.second) { base_t::erase(begin_nonconst() + (ret.first - begin())); @@ -129,7 +130,7 @@ public: */ const_iterator find( const Value& x ) const { - std::pair<const_iterator, bool> const ret(Find()(begin(), end(), x)); + std::pair<const_iterator, bool> const ret(Find_t()(begin(), end(), x)); return (ret.second) ? ret.first : end(); } diff --git a/o3tl/qa/test-sorted_vector.cxx b/o3tl/qa/test-sorted_vector.cxx index 1b321c91a2a4..8e9e719f2c1d 100644 --- a/o3tl/qa/test-sorted_vector.cxx +++ b/o3tl/qa/test-sorted_vector.cxx @@ -136,8 +136,7 @@ public: void testBasics_FindPtr() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent>, - o3tl::find_partialorder_ptrequals<SwContent*, - o3tl::less_ptr_to<SwContent> > > aVec; + o3tl::find_partialorder_ptrequals> aVec; SwContent *p1 = new SwContent(1); SwContent *p2 = new SwContent(2); SwContent *p2_2 = new SwContent(2); @@ -195,8 +194,7 @@ public: void testErase_FindPtr() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent>, - o3tl::find_partialorder_ptrequals<SwContent*, - o3tl::less_ptr_to<SwContent> > > aVec; + o3tl::find_partialorder_ptrequals> aVec; SwContent *p1 = new SwContent(1); SwContent *p1_2 = new SwContent(1); SwContent *p1_3 = new SwContent(1); |