summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-11-20 18:55:17 +0100
committerMaxime Coste <frrrwww@gmail.com>2012-11-20 18:55:17 +0100
commit95cc08a19ef0524456ce8cf9c25bcdc03392f7eb (patch)
treed6392e8caa24a5d291f590dcf25a4e742411cb9c /src
parent533079c38916a0c93a4b36e3385223856ca95524 (diff)
More type safety on SelectFlags
Diffstat (limited to 'src')
-rw-r--r--src/main.cc23
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();