diff options
-rw-r--r-- | libadhocutil/cache.impl.h | 10 | ||||
-rw-r--r-- | libadhocutil/globalStatic.h | 5 | ||||
-rw-r--r-- | libadhocutil/globalStatic.impl.h | 12 | ||||
-rw-r--r-- | libadhocutil/lexer-regex.cpp | 2 | ||||
-rw-r--r-- | libadhocutil/nvpParse.h | 2 |
5 files changed, 16 insertions, 15 deletions
diff --git a/libadhocutil/cache.impl.h b/libadhocutil/cache.impl.h index 8fdc958..d1929a9 100644 --- a/libadhocutil/cache.impl.h +++ b/libadhocutil/cache.impl.h @@ -19,7 +19,7 @@ Cacheable<T, K>::Cacheable(const K & k, time_t vu) : template<typename T, typename K> ObjectCacheable<T, K>::ObjectCacheable(const T & t, const K & k, time_t vu) : Cacheable<T, K>(k, vu), - value(new T(t)) + value(std::make_shared<T>(t)) { } @@ -90,7 +90,7 @@ void Cache<T, K>::add(const K & k, const T & t, time_t validUntil) { Lock(lock); - cached.insert(Element(new ObjectCacheable<T, K>(t, k, validUntil))); + cached.insert(std::make_shared<ObjectCacheable<T, K>>(t, k, validUntil)); } template<typename T, typename K> @@ -98,7 +98,7 @@ void Cache<T, K>::addPointer(const K & k, Value & t, time_t validUntil) { Lock(lock); - cached.insert(Element(new ObjectCacheable<T, K>(t, k, validUntil))); + cached.insert(std::make_shared<ObjectCacheable<T, K>>(t, k, validUntil)); } template<typename T, typename K> @@ -106,7 +106,7 @@ void Cache<T, K>::addFactory(const K & k, const Factory & tf, time_t validUntil) { Lock(lock); - cached.insert(Element(new CallCacheable<T, K>(tf, k, validUntil))); + cached.insert(std::make_shared<CallCacheable<T, K>>(tf, k, validUntil)); } template<typename T, typename K> @@ -114,7 +114,7 @@ void Cache<T, K>::addPointerFactory(const K & k, const PointerFactory & tf, time_t validUntil) { Lock(lock); - cached.insert(Element(new PointerCallCacheable<T, K>(tf, k, validUntil))); + cached.insert(std::make_shared<PointerCallCacheable<T, K>>(tf, k, validUntil)); } template<typename T, typename K> diff --git a/libadhocutil/globalStatic.h b/libadhocutil/globalStatic.h index d379146..5808551 100644 --- a/libadhocutil/globalStatic.h +++ b/libadhocutil/globalStatic.h @@ -1,6 +1,8 @@ #ifndef ADHOCUTIL_GLOBALSTATIC_H #define ADHOCUTIL_GLOBALSTATIC_H +#include <memory> + namespace AdHoc { /** * Wrapper class for initialising/destroying a global static object via @@ -16,10 +18,11 @@ namespace AdHoc { static Object * get(); private: + typedef std::unique_ptr<Object> Ptr; static void createObject() __attribute__((constructor(101))); static void deleteObject() __attribute__((destructor(101))); - inline static Object * & instance(); + inline static Ptr & instance(); }; } diff --git a/libadhocutil/globalStatic.impl.h b/libadhocutil/globalStatic.impl.h index 2a5cf05..fcd8096 100644 --- a/libadhocutil/globalStatic.impl.h +++ b/libadhocutil/globalStatic.impl.h @@ -7,27 +7,25 @@ namespace AdHoc { template<typename Object> Object * GlobalStatic<Object>::get() { - return instance(); + return instance().get(); } template<typename Object> void GlobalStatic<Object>::createObject() { - instance() = new Object(); + instance() = std::make_unique<Object>(); } template<typename Object> void GlobalStatic<Object>::deleteObject() { - auto & i = instance(); - delete i; - i = nullptr; + instance().reset(); } template<typename Object> - Object * & GlobalStatic<Object>::instance() + typename GlobalStatic<Object>::Ptr & GlobalStatic<Object>::instance() { - static Object * _instance = nullptr; + static Ptr _instance; return _instance; } }; diff --git a/libadhocutil/lexer-regex.cpp b/libadhocutil/lexer-regex.cpp index c283798..9b2be79 100644 --- a/libadhocutil/lexer-regex.cpp +++ b/libadhocutil/lexer-regex.cpp @@ -71,7 +71,7 @@ namespace AdHoc { Lexer::PatternPtr regex(const Glib::ustring & pattern, GRegexCompileFlags compile, GRegexMatchFlags match) { - return Lexer::PatternPtr(new Regex(pattern, compile, match)); + return std::make_shared<Regex>(pattern, compile, match); } } } diff --git a/libadhocutil/nvpParse.h b/libadhocutil/nvpParse.h index ce851a6..3c6b03a 100644 --- a/libadhocutil/nvpParse.h +++ b/libadhocutil/nvpParse.h @@ -61,7 +61,7 @@ class NvpParse : public yyFlexLexer { /// @endcond #define NvpTarget(T) std::map<std::string, std::shared_ptr<::AdHoc::NvpParse::TargetBase<T>>> -#define NvpValue(c, m) { #m, std::shared_ptr<::AdHoc::NvpParse::Target<c, decltype(c::m)>>(new ::AdHoc::NvpParse::Target<c, decltype(c::m)>(&c::m)) } +#define NvpValue(c, m) { #m, std::make_shared<::AdHoc::NvpParse::Target<c, decltype(c::m)>>(&c::m) } /** Parse an input stream into the given object. * @param in The input stream. |