From 851d9cb9dbee963f1cd99a4c3a9b5668f076ca84 Mon Sep 17 00:00:00 2001 From: Habu Date: Fri, 22 Oct 2021 00:50:01 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20FlagGroup=20=E3=82=AF=E3=83=A9?= =?utf8?q?=E3=82=B9=E3=81=AE=20initializer=5Flist=20=E3=82=92=E5=8F=97?= =?utf8?q?=E3=81=91=E5=8F=96=E3=82=8B=E3=83=A1=E3=83=B3=E3=83=90=E9=96=A2?= =?utf8?q?=E6=95=B0=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit FlagGroup クラスのメンバ関数のうち、引数に std::initializer_list を受け取る 以下の関数を削除する。 set / reset / has_all_of / has_any_of / has_none_of FlagGroup クラスには std::initializer_list を引数に受け取るコンストラクタが あり、上記の関数は引数に FlagGroup クラスを受け取るオーバーロードされた 関数が存在するので、FlagGroupクラスへの暗黙の変換により関数がなくても std::initializer_list を引数に渡して使用することができる。 --- src/util/flag-group.h | 101 +++++--------------------------------------------- 1 file changed, 10 insertions(+), 91 deletions(-) diff --git a/src/util/flag-group.h b/src/util/flag-group.h index c83ce5460..dd5bfa3d8 100644 --- a/src/util/flag-group.h +++ b/src/util/flag-group.h @@ -44,8 +44,8 @@ public: * @param il ONの状態で生成するフラグを指定した initializer_list */ FlagGroup(std::initializer_list il) + : FlagGroup(il.begin(), il.end()) { - set(il); } /** @@ -61,7 +61,11 @@ public: template FlagGroup(InputIter first, InputIter last) { - set(first, last); + static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); + + for (; first != last; ++first) { + set(*first); + } } /** @@ -100,13 +104,7 @@ public: template FlagGroup &set(InputIter first, InputIter last) { - static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); - - for (; first != last; ++first) { - set(*first); - } - - return *this; + return set(FlagGroup(first, last)); } /** @@ -122,17 +120,6 @@ public: } /** - * @brief 指定したinitializer_listに含まれるフラグをONにする - * - * @param list ONにするフラグを列挙したinitializer_list - * @return *thisを返す - */ - FlagGroup &set(std::initializer_list list) - { - return set(std::begin(list), std::end(list)); - } - - /** * @brief 指定したフラグをOFFにする * * @param flag OFFにするフラグを指定する @@ -155,13 +142,7 @@ public: template FlagGroup &reset(InputIter first, InputIter last) { - static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); - - for (; first != last; ++first) { - reset(*first); - } - - return *this; + return reset(FlagGroup(first, last)); } /** @@ -177,17 +158,6 @@ public: } /** - * @brief 指定したinitializer_listに含まれるフラグをOFFにする - * - * @param list OFFにするフラグを列挙したinitializer_list - * @return *thisを返す - */ - FlagGroup &reset(std::initializer_list list) - { - return reset(std::begin(list), std::end(list)); - } - - /** * @brief 指定したフラグがONかOFFか調べる * * @param f 調べるフラグを指定する @@ -246,26 +216,7 @@ public: template [[nodiscard]] bool has_all_of(InputIter first, InputIter last) const { - static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); - - for (; first != last; ++first) { - if (has_not(*first)) { - return false; - } - } - - return true; - } - - /** - * @brief 指定したinitializer_listに含まれるフラグがすべてONかどうかを調べる - * - * @param list 調べるフラグを列挙したinitializer_list - * @return すべてのフラグがONであればtrue、そうでなければfalse - */ - [[nodiscard]] bool has_all_of(std::initializer_list list) const - { - return has_all_of(std::begin(list), std::end(list)); + return has_all_of(FlagGroup(first, last)); } /** @@ -290,26 +241,7 @@ public: template [[nodiscard]] bool has_any_of(InputIter first, InputIter last) const { - static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); - - for (; first != last; ++first) { - if (has(*first)) { - return true; - } - } - - return false; - } - - /** - * @brief 指定したinitializer_listに含まれるフラグのいずれかがONかどうかを調べる - * - * @param list 調べるフラグを列挙したinitializer_list - * @return いずれかのフラグがONであればtrue、そうでなければfalse - */ - [[nodiscard]] bool has_any_of(std::initializer_list list) const - { - return has_any_of(std::begin(list), std::end(list)); + return has_any_of(FlagGroup(first, last)); } /** @@ -334,23 +266,10 @@ public: template [[nodiscard]] bool has_none_of(InputIter first, InputIter last) const { - static_assert(std::is_same::value_type, FlagType>::value, "Iterator value type is invalid"); - return !has_any_of(first, last); } /** - * @brief 指定したinitializer_listに含まれるフラグがすべてOFFかどうかを調べる - * - * @param list 調べるフラグを列挙したinitializer_list - * @return すべてのフラグがOFFであればtrue、そうでなければfalse - */ - [[nodiscard]] bool has_none_of(std::initializer_list list) const - { - return !has_any_of(list); - } - - /** * @brief 引数で指定したFlagGroupのインスンタンスのONになっているフラグがすべてOFFかどうかを調べる * * @param rhs FlagGroupのインスタンス -- 2.11.0