gem5-dev@gem5.org

The gem5 Developer List

View all threads

[S] Change in gem5/gem5[develop]: base: define is_iterable type trait

GB
Gabriel B. (Gerrit)
Fri, Jul 7, 2023 10:17 AM

Gabriel B. has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/71838?usp=email )

Change subject: base: define is_iterable type trait
......................................................................

base: define is_iterable type trait

Change-Id: I38bb0ddcbb95645797f1d20724b78aff3bef4580
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71838
Maintainer: Daniel Carvalho odanrc@yahoo.com.br
Tested-by: kokoro noreply+kokoro@google.com
Reviewed-by: Daniel Carvalho odanrc@yahoo.com.br

M src/base/type_traits.hh
1 file changed, 16 insertions(+), 3 deletions(-)

Approvals:
Daniel Carvalho: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass

diff --git a/src/base/type_traits.hh b/src/base/type_traits.hh
index 1fec93d..a42f786 100644
--- a/src/base/type_traits.hh
+++ b/src/base/type_traits.hh
@@ -27,8 +27,8 @@

  • POSSIBILITY OF SUCH DAMAGE.
    */

-#ifndef BASE_TYPETRAITS_HH
-#define BASE_TYPETRAITS_HH
+#ifndef BASE_TYPETRAITS_HH
+#define BASE_TYPETRAITS_HH

#include <tuple>
#include <type_traits>
@@ -92,6 +92,19 @@
using MemberFunctionArgsTuple_t =
typename MemberFunctionSignature<decltype(F)>::argsTuple_t;

+// iterable type trait
+template <typename, typename = void>
+struct is_iterable: std::false_type {};
+
+template <typename T>
+struct is_iterable<T,

  • std::void_t<decltype(begin(std::declval<T>())),
  •            decltype(end(std::declval<T>()))>>: std::true_type {};
    

+template <typename T>
+constexpr bool is_iterable_v = is_iterable<T>::value;
+
} // namespace gem5

-#endif // BASE_TYPETRAITS_HH
+#endif // BASE_TYPETRAITS_HH

--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/71838?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I38bb0ddcbb95645797f1d20724b78aff3bef4580
Gerrit-Change-Number: 71838
Gerrit-PatchSet: 2
Gerrit-Owner: Gabriel B. gabriel.busnot@arteris.com
Gerrit-Reviewer: Bobby Bruce bbruce@ucdavis.edu
Gerrit-Reviewer: Daniel Carvalho odanrc@yahoo.com.br
Gerrit-Reviewer: Gabriel B. gabriel.busnot@arteris.com
Gerrit-Reviewer: kokoro noreply+kokoro@google.com
Gerrit-CC: Giacomo Travaglini giacomo.travaglini@arm.com
Gerrit-CC: kokoro noreply+kokoro@google.com

Gabriel B. has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/71838?usp=email ) Change subject: base: define is_iterable type trait ...................................................................... base: define is_iterable type trait Change-Id: I38bb0ddcbb95645797f1d20724b78aff3bef4580 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71838 Maintainer: Daniel Carvalho <odanrc@yahoo.com.br> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> --- M src/base/type_traits.hh 1 file changed, 16 insertions(+), 3 deletions(-) Approvals: Daniel Carvalho: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/base/type_traits.hh b/src/base/type_traits.hh index 1fec93d..a42f786 100644 --- a/src/base/type_traits.hh +++ b/src/base/type_traits.hh @@ -27,8 +27,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef __BASE_TYPETRAITS_HH__ -#define __BASE_TYPETRAITS_HH__ +#ifndef BASE_TYPETRAITS_HH +#define BASE_TYPETRAITS_HH #include <tuple> #include <type_traits> @@ -92,6 +92,19 @@ using MemberFunctionArgsTuple_t = typename MemberFunctionSignature<decltype(F)>::argsTuple_t; + +// iterable type trait +template <typename, typename = void> +struct is_iterable: std::false_type {}; + +template <typename T> +struct is_iterable<T, + std::void_t<decltype(begin(std::declval<T>())), + decltype(end(std::declval<T>()))>>: std::true_type {}; + +template <typename T> +constexpr bool is_iterable_v = is_iterable<T>::value; + } // namespace gem5 -#endif // __BASE_TYPETRAITS_HH__ +#endif // BASE_TYPETRAITS_HH -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/71838?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I38bb0ddcbb95645797f1d20724b78aff3bef4580 Gerrit-Change-Number: 71838 Gerrit-PatchSet: 2 Gerrit-Owner: Gabriel B. <gabriel.busnot@arteris.com> Gerrit-Reviewer: Bobby Bruce <bbruce@ucdavis.edu> Gerrit-Reviewer: Daniel Carvalho <odanrc@yahoo.com.br> Gerrit-Reviewer: Gabriel B. <gabriel.busnot@arteris.com> Gerrit-Reviewer: kokoro <noreply+kokoro@google.com> Gerrit-CC: Giacomo Travaglini <giacomo.travaglini@arm.com> Gerrit-CC: kokoro <noreply+kokoro@google.com>