summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libadhocutil/cache.h32
-rw-r--r--libadhocutil/cache.impl.h14
-rw-r--r--libadhocutil/unittests/Jamfile.jam2
3 files changed, 24 insertions, 24 deletions
diff --git a/libadhocutil/cache.h b/libadhocutil/cache.h
index 4f53a53..14f803d 100644
--- a/libadhocutil/cache.h
+++ b/libadhocutil/cache.h
@@ -2,13 +2,13 @@
#define ADHOCUTIL_CACHE_H
#include <time.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/function.hpp>
+#include <memory>
+#include <functional>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>
-#include <boost/thread/shared_mutex.hpp>
-#include <boost/variant.hpp>
+#include <shared_mutex>
+#include <variant>
#include "visibility.h"
namespace AdHoc {
@@ -17,7 +17,7 @@ namespace AdHoc {
template <typename T, typename K>
class DLL_PUBLIC Cacheable {
public:
- typedef const boost::shared_ptr<const T> Value;
+ typedef const std::shared_ptr<const T> Value;
Cacheable(const K & k, time_t validUntil);
const K key;
@@ -41,27 +41,27 @@ class DLL_PUBLIC ObjectCacheable : public Cacheable<T, K> {
template <typename T, typename K>
class DLL_PUBLIC CallCacheable : public Cacheable<T, K> {
public:
- typedef boost::function<T()> Factory;
+ typedef std::function<T()> Factory;
CallCacheable(const Factory & t, const K & k, time_t validUtil);
virtual typename Cacheable<T, K>::Value item() const override;
private:
- mutable boost::variant<boost::shared_ptr<const T>, Factory> value;
- mutable boost::shared_mutex lock;
+ mutable std::variant<std::shared_ptr<const T>, Factory> value;
+ mutable std::shared_mutex lock;
};
template <typename T, typename K>
class DLL_PUBLIC PointerCallCacheable : public Cacheable<T, K> {
public:
- typedef boost::function<typename Cacheable<T, K>::Value()> Factory;
+ typedef std::function<typename Cacheable<T, K>::Value()> Factory;
PointerCallCacheable(const Factory & t, const K & k, time_t validUtil);
virtual typename Cacheable<T, K>::Value item() const override;
private:
- mutable boost::variant<boost::shared_ptr<const T>, Factory> value;
- mutable boost::shared_mutex lock;
+ mutable std::variant<std::shared_ptr<const T>, Factory> value;
+ mutable std::shared_mutex lock;
};
struct byValidity {};
@@ -74,11 +74,11 @@ class DLL_PUBLIC Cache {
public:
/// @cond
typedef K Key;
- typedef const boost::shared_ptr<const T> Value;
- typedef boost::function<T()> Factory;
- typedef boost::function<Value()> PointerFactory;
+ typedef const std::shared_ptr<const T> Value;
+ typedef std::function<T()> Factory;
+ typedef std::function<Value()> PointerFactory;
typedef Cacheable<T, K> Item;
- typedef boost::shared_ptr<Item> Element;
+ typedef std::shared_ptr<Item> Element;
/// @endcond
/** Construct a default empty cache. */
@@ -133,7 +133,7 @@ class DLL_PUBLIC Cache {
void DLL_PRIVATE prune() const;
mutable time_t lastPruneTime;
- mutable boost::shared_mutex lock;
+ mutable std::shared_mutex lock;
typedef boost::multi_index::multi_index_container<Element,
boost::multi_index::indexed_by<
diff --git a/libadhocutil/cache.impl.h b/libadhocutil/cache.impl.h
index 42e4e3a..8fdc958 100644
--- a/libadhocutil/cache.impl.h
+++ b/libadhocutil/cache.impl.h
@@ -49,12 +49,12 @@ typename Cacheable<T, K>::Value
CallCacheable<T, K>::item() const
{
Lock(lock);
- if (auto t = boost::get<typename Cacheable<T, K>::Value>(&value)) {
+ if (auto t = std::get_if<0>(&value)) {
return *t;
}
- const Factory & f = boost::get<Factory>(value);
- value = typename Cacheable<T, K>::Value(new T(f()));
- return boost::get<typename Cacheable<T, K>::Value>(value);
+ const Factory & f = std::get<Factory>(value);
+ value = std::make_shared<T>(f());
+ return std::get<0>(value);
}
@@ -70,12 +70,12 @@ typename Cacheable<T, K>::Value
PointerCallCacheable<T, K>::item() const
{
Lock(lock);
- if (auto t = boost::get<typename Cacheable<T, K>::Value>(&value)) {
+ if (auto t = std::get_if<0>(&value)) {
return *t;
}
- const Factory & f = boost::get<Factory>(value);
+ const Factory & f = std::get<Factory>(value);
value = f();
- return boost::get<typename Cacheable<T, K>::Value>(value);
+ return std::get<0>(value);
}
diff --git a/libadhocutil/unittests/Jamfile.jam b/libadhocutil/unittests/Jamfile.jam
index 3cc32c1..95e9a82 100644
--- a/libadhocutil/unittests/Jamfile.jam
+++ b/libadhocutil/unittests/Jamfile.jam
@@ -140,7 +140,7 @@ run
<library>..//adhocutil
<library>boost_utf
<library>boost_system
- <library>boost_thread
+ <library>pthread
:
testCache
;