diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 17:44:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 17:44:55 +0000 |
commit | 5068d34c08f951a7ea6257d305a1627b09a95817 (patch) | |
tree | 08213e2be853396a3b07ce15dbe222644dcd9a89 /src/safe/accessmode.h | |
parent | Initial commit. (diff) | |
download | lnav-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 '')
-rw-r--r-- | src/safe/accessmode.h | 49 |
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 |