Index: mojo/public/cpp/bindings/lib/bindings_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/bindings_internal.h b/mojo/public/cpp/bindings/lib/bindings_internal.h |
index 6d2562f1b585fa710d9cf892776c721f9b29f4dc..969137678f12419c943f9e8a26e11697ae8a5b66 100644 |
--- a/mojo/public/cpp/bindings/lib/bindings_internal.h |
+++ b/mojo/public/cpp/bindings/lib/bindings_internal.h |
@@ -94,12 +94,32 @@ struct IsHandle { |
template <typename T> |
struct IsUnionDataType { |
+ private: |
template <typename U> |
static YesType Test(const typename U::MojomUnionDataType*); |
template <typename U> |
static NoType Test(...); |
+ EnsureTypeIsComplete<T> check_t_; |
+ |
+ public: |
+ static const bool value = |
+ sizeof(Test<T>(0)) == sizeof(YesType) && !IsConst<T>::value; |
+}; |
+ |
+template <typename T> |
+struct IsEnumDataType { |
+ private: |
+ template <typename U> |
+ static YesType Test(const typename U::MojomEnumDataType*); |
+ |
+ template <typename U> |
+ static NoType Test(...); |
+ |
+ EnsureTypeIsComplete<T> check_t_; |
+ |
+ public: |
static const bool value = |
sizeof(Test<T>(0)) == sizeof(YesType) && !IsConst<T>::value; |
}; |