Index: mojo/public/cpp/bindings/lib/callback_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/callback_internal.h b/mojo/public/cpp/bindings/lib/callback_internal.h |
index 4802e437f2b6be2a4bec41ca7a27398175b1dcf2..d43ca2a58bd6fa193f3ad29471515474013cff41 100644 |
--- a/mojo/public/cpp/bindings/lib/callback_internal.h |
+++ b/mojo/public/cpp/bindings/lib/callback_internal.h |
@@ -6,49 +6,31 @@ |
#define MOJO_PUBLIC_CPP_BINDINGS_LIB_CALLBACK_INTERNAL_H_ |
#include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
+#include "mojo/public/cpp/bindings/lib/template_util.h" |
namespace mojo { |
+class String; |
+ |
namespace internal { |
-template <typename T, bool is_object_type = TypeTraits<T>::kIsObject> |
+template <typename T, bool is_move_only = IsMoveOnlyType<T>::value> |
yzshen1
2014/05/27 22:16:59
It seems we don't need the second template paramet
|
struct Callback_ParamTraits {}; |
template <typename T> |
struct Callback_ParamTraits<T, true> { |
- typedef const T& ForwardType; |
- static const bool kIsScopedHandle = false; |
+ typedef T ForwardType; |
}; |
template <typename T> |
struct Callback_ParamTraits<T, false> { |
typedef T ForwardType; |
- static const bool kIsScopedHandle = false; |
}; |
-template <typename H> |
-struct Callback_ParamTraits<ScopedHandleBase<H>, true> { |
- typedef ScopedHandleBase<H> ForwardType; |
- static const bool kIsScopedHandle = true; |
+template <> |
+struct Callback_ParamTraits<String, false> { |
+ typedef const String& ForwardType; |
}; |
-template<bool B, typename T = void> |
-struct EnableIf {}; |
- |
-template<typename T> |
-struct EnableIf<true, T> { typedef T type; }; |
- |
-template <typename T> |
-typename EnableIf<!Callback_ParamTraits<T>::kIsScopedHandle, T>::type& |
- Callback_Forward(T& t) { |
- return t; |
-} |
- |
-template <typename T> |
-typename EnableIf<Callback_ParamTraits<T>::kIsScopedHandle, T>::type |
- Callback_Forward(T& t) { |
- return t.Pass(); |
-} |
- |
} // namespace internal |
} // namespace mojo |