aboutsummaryrefslogtreecommitdiff
path: root/build/prefix_map.txx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-01-14 11:46:32 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-01-14 11:46:32 +0200
commitc2339b07fb683355c6a6155ec312b1616167614e (patch)
tree7ef5437f838ddfd1a1631dcd471bc89b63679177 /build/prefix_map.txx
parentce8a94e6a76097ef7eeb34df4257991a20599712 (diff)
Implement prefix_map
Diffstat (limited to 'build/prefix_map.txx')
-rw-r--r--build/prefix_map.txx42
1 files changed, 42 insertions, 0 deletions
diff --git a/build/prefix_map.txx b/build/prefix_map.txx
new file mode 100644
index 0000000..17a8ca0
--- /dev/null
+++ b/build/prefix_map.txx
@@ -0,0 +1,42 @@
+// file : build/prefix_map.txx -*- C++ -*-
+// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC
+// license : MIT; see accompanying LICENSE file
+
+namespace build
+{
+ template <typename M>
+ auto prefix_map_impl<M>::
+ find (const key_type& k) -> std::pair<iterator, iterator>
+ {
+ std::pair<iterator, iterator> r;
+ r.first = this->lower_bound (k);
+
+ for (r.second = r.first;
+ r.second != this->end ();
+ ++r.second)
+ {
+ if (!this->key_comp ().prefix (k, r.second->first))
+ break;
+ }
+
+ return r;
+ }
+
+ template <typename M>
+ auto prefix_map_impl<M>::
+ find (const key_type& k) const -> std::pair<const_iterator, const_iterator>
+ {
+ std::pair<const_iterator, const_iterator> r;
+ r.first = this->lower_bound (k);
+
+ for (r.second = r.first;
+ r.second != this->end ();
+ ++r.second)
+ {
+ if (!this->key_comp ().prefix (k, r.second->first))
+ break;
+ }
+
+ return r;
+ }
+}