diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-11-20 18:55:17 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-11-20 18:55:17 +0100 |
| commit | 95cc08a19ef0524456ce8cf9c25bcdc03392f7eb (patch) | |
| tree | d6392e8caa24a5d291f590dcf25a4e742411cb9c /src | |
| parent | 533079c38916a0c93a4b36e3385223856ca95524 (diff) | |
More type safety on SelectFlags
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/main.cc b/src/main.cc index cbff8402..fe697e1b 100644 --- a/src/main.cc +++ b/src/main.cc @@ -335,18 +335,23 @@ private: template<typename T> Repeated<T> repeated(T func) { return Repeated<T>(func); } -namespace SelectFlags +enum class SelectFlags { - enum Type - { - None = 0, - Reverse = 1, - Inclusive = 2, - Extend = 4 - }; + None = 0, + Reverse = 1, + Inclusive = 2, + Extend = 4 +}; +constexpr SelectFlags operator|(SelectFlags lhs, SelectFlags rhs) +{ + return (SelectFlags)((int) lhs | (int) rhs); +} +constexpr bool operator&(SelectFlags lhs, SelectFlags rhs) +{ + return ((int) lhs & (int) rhs) != 0; } -template<int flags> +template<SelectFlags flags> void select_to_next_char(Context& context) { int param = context.numeric_param(); |
