mirror of
https://github.com/BlackMATov/enum.hpp.git
synced 2025-12-13 06:47:41 +07:00
external enum example
This commit is contained in:
37
README.md
37
README.md
@@ -148,6 +148,8 @@ namespace some_namespace
|
||||
ENUM_HPP_REGISTER_TRAITS(color)
|
||||
|
||||
int main() {
|
||||
using color = some_namespace::color;
|
||||
|
||||
// to string
|
||||
static_assert(enum_hpp::to_string(color::red) == "red");
|
||||
|
||||
@@ -158,6 +160,34 @@ int main() {
|
||||
}
|
||||
```
|
||||
|
||||
### Adapting external enums
|
||||
|
||||
```cpp
|
||||
namespace external_ns
|
||||
{
|
||||
enum class external_enum : unsigned short {
|
||||
a = 10,
|
||||
b,
|
||||
c = a + b
|
||||
};
|
||||
|
||||
// should be in the same namespace
|
||||
ENUM_HPP_TRAITS_DECL(external_enum,
|
||||
(a)
|
||||
(b)
|
||||
(c))
|
||||
}
|
||||
|
||||
ENUM_HPP_REGISTER_TRAITS(external_ns::external_enum)
|
||||
|
||||
int main() {
|
||||
using ee = external_ns::external_enum;
|
||||
static_assert(enum_hpp::to_string(ee::a) == "a");
|
||||
static_assert(enum_hpp::from_string<ee>("c") == ee::c);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### Enum traits
|
||||
@@ -170,11 +200,16 @@ ENUM_HPP_DECL(
|
||||
/*fields*/)
|
||||
|
||||
// declare enum class
|
||||
ENUM_HPP_DECL(
|
||||
ENUM_HPP_CLASS_DECL(
|
||||
/*enum_name*/,
|
||||
/*underlying_type*/,
|
||||
/*fields*/)
|
||||
|
||||
// declare only traits
|
||||
ENUM_HPP_TRAITS_DECL(
|
||||
/*enum_name*/,
|
||||
/*fields*/)
|
||||
|
||||
struct /*enum_name*/_traits {
|
||||
using underlying_type = /*underlying_type*/;
|
||||
static constexpr std::size_t size = /*field_count*/;
|
||||
|
||||
Reference in New Issue
Block a user