mirror of
https://github.com/BlackMATov/meta.hpp.git
synced 2025-12-16 14:09:02 +07:00
new trait volatile flags
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
- type conversions
|
- type conversions
|
||||||
- fix all includes to work with the library more flexible
|
- fix all includes to work with the library more flexible
|
||||||
- test and support shared libraries
|
- test and support shared libraries
|
||||||
|
- add volatile support for uarg/variable
|
||||||
|
|
||||||
## Version 1.0
|
## Version 1.0
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace meta_hpp::detail
|
|||||||
{
|
{
|
||||||
enum class member_flags : std::uint32_t {
|
enum class member_flags : std::uint32_t {
|
||||||
is_readonly = 1 << 0,
|
is_readonly = 1 << 0,
|
||||||
|
is_volatile = 1 << 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
using member_bitflags = bitflags<member_flags>;
|
using member_bitflags = bitflags<member_flags>;
|
||||||
@@ -35,6 +36,10 @@ namespace meta_hpp::detail
|
|||||||
flags.set(member_flags::is_readonly);
|
flags.set(member_flags::is_readonly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if constexpr ( std::is_volatile_v<value_type> ) {
|
||||||
|
flags.set(member_flags::is_volatile);
|
||||||
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace meta_hpp::detail
|
|||||||
{
|
{
|
||||||
enum class pointer_flags : std::uint32_t {
|
enum class pointer_flags : std::uint32_t {
|
||||||
is_readonly = 1 << 0,
|
is_readonly = 1 << 0,
|
||||||
|
is_volatile = 1 << 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
using pointer_bitflags = bitflags<pointer_flags>;
|
using pointer_bitflags = bitflags<pointer_flags>;
|
||||||
@@ -31,6 +32,10 @@ namespace meta_hpp::detail
|
|||||||
flags.set(pointer_flags::is_readonly);
|
flags.set(pointer_flags::is_readonly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if constexpr ( std::is_volatile_v<data_type> ) {
|
||||||
|
flags.set(pointer_flags::is_volatile);
|
||||||
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,8 +12,9 @@ namespace meta_hpp::detail
|
|||||||
{
|
{
|
||||||
enum class reference_flags : std::uint32_t {
|
enum class reference_flags : std::uint32_t {
|
||||||
is_readonly = 1 << 0,
|
is_readonly = 1 << 0,
|
||||||
is_lvalue = 1 << 1,
|
is_volatile = 1 << 1,
|
||||||
is_rvalue = 1 << 2,
|
is_lvalue = 1 << 2,
|
||||||
|
is_rvalue = 1 << 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
using reference_bitflags = bitflags<reference_flags>;
|
using reference_bitflags = bitflags<reference_flags>;
|
||||||
@@ -33,6 +34,10 @@ namespace meta_hpp::detail
|
|||||||
flags.set(reference_flags::is_readonly);
|
flags.set(reference_flags::is_readonly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if constexpr ( std::is_volatile_v<data_type> ) {
|
||||||
|
flags.set(reference_flags::is_volatile);
|
||||||
|
}
|
||||||
|
|
||||||
if constexpr ( std::is_lvalue_reference_v<Reference> ) {
|
if constexpr ( std::is_lvalue_reference_v<Reference> ) {
|
||||||
flags.set(reference_flags::is_lvalue);
|
flags.set(reference_flags::is_lvalue);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user