diff options
| author | Maxime Coste <mawww@kakoune.org> | 2016-12-27 21:52:53 +0000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2016-12-27 21:52:53 +0000 |
| commit | 243bcf6a6d678fbf6a5d13935e6f77e571836f3e (patch) | |
| tree | 59300ff0dd55b07e6e9dfc137b4ca68022d4a88a /src/enum.hh | |
| parent | 6d3842af5b5d58cd1644bbc5ecde8dfa81a7d7e0 (diff) | |
Support set -add on flag types
Fixes #1082
Diffstat (limited to 'src/enum.hh')
| -rw-r--r-- | src/enum.hh | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/enum.hh b/src/enum.hh index 6f4a4bdb..01f89b32 100644 --- a/src/enum.hh +++ b/src/enum.hh @@ -73,6 +73,15 @@ EnableIfWithoutBitOps<Enum> option_from_string(StringView str, Enum& e) e = it->value; } +template<typename Flags, typename = decltype(enum_desc(Flags{}))> +EnableIfWithBitOps<Flags, bool> option_add(Flags& opt, StringView str) +{ + Flags res = Flags{}; + option_from_string(str, res); + opt |= res; + return res != (Flags)0; +} + } #endif // enum_hh_INCLUDED |
