diff options
author | lloyd <[email protected]> | 2012-02-20 17:09:46 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2012-02-20 17:09:46 +0000 |
commit | 8c2dc1a6c3bf352a56622d569dc855ca8d6ab5e0 (patch) | |
tree | 6f50627e2e73c2b1fc1295dde8b19c4f169de46d /src/utils/stl_util.h | |
parent | 24c1546324995da70c51137ad138c3bb997a37b9 (diff) | |
parent | e943fc67962b6e4dc2c7c64707dc2cf062728520 (diff) |
propagate from branch 'net.randombit.botan.tls-state-machine' (head 0ceb9cde62a2b3614901ae85a53546d9fc641326)
to branch 'net.randombit.botan.cxx11' (head 777e65950ef3706a82e5df20dcca7fcc999ca533)
Diffstat (limited to 'src/utils/stl_util.h')
-rw-r--r-- | src/utils/stl_util.h | 49 |
1 files changed, 10 insertions, 39 deletions
diff --git a/src/utils/stl_util.h b/src/utils/stl_util.h index 9ae5c5f7a..c681ef8c9 100644 --- a/src/utils/stl_util.h +++ b/src/utils/stl_util.h @@ -12,27 +12,7 @@ namespace Botan { -/** -* Copy-on-Predicate Algorithm -* @param current the first iterator value -* @param end the final iterator value -* @param dest an output iterator -* @param copy_p the predicate -*/ -template<typename InputIterator, typename OutputIterator, typename Predicate> -OutputIterator copy_if(InputIterator current, InputIterator end, - OutputIterator dest, Predicate copy_p) - { - while(current != end) - { - if(copy_p(*current)) - *dest++ = *current; - ++current; - } - return dest; - } - -/** +/* * Searching through a std::map * @param mapping the map to search * @param key is what to look for @@ -44,32 +24,23 @@ inline V search_map(const std::map<K, V>& mapping, const K& key, const V& null_result = V()) { - typename std::map<K, V>::const_iterator i = mapping.find(key); + auto i = mapping.find(key); if(i == mapping.end()) return null_result; return i->second; } -/** -* Function adaptor for delete operation -*/ -template<class T> -class del_fun : public std::unary_function<T, void> +template<typename K, typename V, typename R> +inline R search_map(const std::map<K, V>& mapping, const K& key, + const R& null_result, const R& found_result) { - public: - void operator()(T* ptr) { delete ptr; } - }; - -/** -* Delete the second half of a pair of objects -*/ -template<typename Pair> -void delete2nd(Pair& pair) - { - delete pair.second; + auto i = mapping.find(key); + if(i == mapping.end()) + return null_result; + return found_result; } -/** +/* * Insert a key/value pair into a multimap */ template<typename K, typename V> |