summaryrefslogtreecommitdiffstats
path: root/src/safe/accessmode.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 17:44:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 17:44:55 +0000
commit5068d34c08f951a7ea6257d305a1627b09a95817 (patch)
tree08213e2be853396a3b07ce15dbe222644dcd9a89 /src/safe/accessmode.h
parentInitial commit. (diff)
downloadlnav-5068d34c08f951a7ea6257d305a1627b09a95817.tar.xz
lnav-5068d34c08f951a7ea6257d305a1627b09a95817.zip
Adding upstream version 0.11.1.upstream/0.11.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/safe/accessmode.h')
-rw-r--r--src/safe/accessmode.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/safe/accessmode.h b/src/safe/accessmode.h
new file mode 100644
index 0000000..3dd0f4f
--- /dev/null
+++ b/src/safe/accessmode.h
@@ -0,0 +1,49 @@
+/**
+ * @file accessmode.h
+ * @author L.-C. C.
+ * @brief
+ * @version 0.1
+ * @date 2019-01-20
+ *
+ * @copyright Copyright (c) 2019
+ *
+ */
+
+#pragma once
+
+#include <mutex>
+#if __cplusplus >= 201402L
+#include <shared_mutex>
+#endif // __cplusplus >= 201402L
+
+namespace safe
+{
+ enum class AccessMode
+ {
+ ReadOnly,
+ ReadWrite
+ };
+
+ template<typename LockType>
+ struct AccessTraits
+ {
+ static constexpr bool IsReadOnly = false;
+ };
+ template<typename MutexType>
+ struct AccessTraits<std::lock_guard<MutexType>>
+ {
+ static constexpr bool IsReadOnly = false;
+ };
+ template<typename MutexType>
+ struct AccessTraits<std::unique_lock<MutexType>>
+ {
+ static constexpr bool IsReadOnly = false;
+ };
+#if __cplusplus >= 201402L
+ template<typename MutexType>
+ struct AccessTraits<std::shared_lock<MutexType>>
+ {
+ static constexpr bool IsReadOnly = true;
+ };
+#endif // __cplusplus >= 201402L
+} // namespace safe