Repository :
http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
---------------------------------------------------------------
commit dc7cff804d56b5fe19e29e4b4c572f051f8145f7
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:14:53 2014 +0200
Added UniquePointer type and PointerMapOp::findOne method
---------------------------------------------------------------
src/Common/Types.hpp | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/src/Common/Types.hpp b/src/Common/Types.hpp
index e064804..999ea78 100644
--- a/src/Common/Types.hpp
+++ b/src/Common/Types.hpp
@@ -69,6 +69,26 @@ namespace firewalld
return std::make_shared<pointer_type>(std::forward<Args>(args)...);
}
+ template<typename pointer_type, typename... Args>
+ static inline UniquePointer<pointer_type> makeUniquePointer(Args&&...
args)
+ {
+ return std::move(std::unique_ptr<pointer_type>(new
pointer_type(std::forward<Args>(args)...)));
+ }
+
+ namespace PointerMapOp {
+ template<typename key_type, typename pointer_type>
+ Pointer<pointer_type> findOne(const PointerMap<key_type,
pointer_type>& map,
+ const key_type& key)
+ {
+ auto it = map.find(key);
+ if (it == map.end()) {
+ return Pointer<pointer_type>(nullptr);
+ } else {
+ return it->second;
+ }
+ }
+ }
+
// Flag set
// based on
https://stackoverflow.com/a/4226975
template <typename enum_type>