aboutsummaryrefslogtreecommitdiff
path: root/mojo/public/cpp/bindings/lib/serialization_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/public/cpp/bindings/lib/serialization_util.h')
-rw-r--r--mojo/public/cpp/bindings/lib/serialization_util.h213
1 files changed, 0 insertions, 213 deletions
diff --git a/mojo/public/cpp/bindings/lib/serialization_util.h b/mojo/public/cpp/bindings/lib/serialization_util.h
deleted file mode 100644
index 4820a01..0000000
--- a/mojo/public/cpp/bindings/lib/serialization_util.h
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_SERIALIZATION_UTIL_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_LIB_SERIALIZATION_UTIL_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <queue>
-
-#include "base/logging.h"
-#include "base/macros.h"
-#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
-#include "mojo/public/cpp/bindings/lib/serialization_context.h"
-
-namespace mojo {
-namespace internal {
-
-template <typename T>
-struct HasIsNullMethod {
- template <typename U>
- static char Test(decltype(U::IsNull)*);
- template <typename U>
- static int Test(...);
- static const bool value = sizeof(Test<T>(0)) == sizeof(char);
-
- private:
- EnsureTypeIsComplete<T> check_t_;
-};
-
-template <
- typename Traits,
- typename UserType,
- typename std::enable_if<HasIsNullMethod<Traits>::value>::type* = nullptr>
-bool CallIsNullIfExists(const UserType& input) {
- return Traits::IsNull(input);
-}
-
-template <
- typename Traits,
- typename UserType,
- typename std::enable_if<!HasIsNullMethod<Traits>::value>::type* = nullptr>
-bool CallIsNullIfExists(const UserType& input) {
- return false;
-}
-template <typename T>
-struct HasSetToNullMethod {
- template <typename U>
- static char Test(decltype(U::SetToNull)*);
- template <typename U>
- static int Test(...);
- static const bool value = sizeof(Test<T>(0)) == sizeof(char);
-
- private:
- EnsureTypeIsComplete<T> check_t_;
-};
-
-template <
- typename Traits,
- typename UserType,
- typename std::enable_if<HasSetToNullMethod<Traits>::value>::type* = nullptr>
-bool CallSetToNullIfExists(UserType* output) {
- Traits::SetToNull(output);
- return true;
-}
-
-template <typename Traits,
- typename UserType,
- typename std::enable_if<!HasSetToNullMethod<Traits>::value>::type* =
- nullptr>
-bool CallSetToNullIfExists(UserType* output) {
- LOG(ERROR) << "A null value is received. But the Struct/Array/StringTraits "
- << "class doesn't define a SetToNull() function and therefore is "
- << "unable to deserialize the value.";
- return false;
-}
-
-template <typename T>
-struct HasSetUpContextMethod {
- template <typename U>
- static char Test(decltype(U::SetUpContext)*);
- template <typename U>
- static int Test(...);
- static const bool value = sizeof(Test<T>(0)) == sizeof(char);
-
- private:
- EnsureTypeIsComplete<T> check_t_;
-};
-
-template <typename Traits,
- bool has_context = HasSetUpContextMethod<Traits>::value>
-struct CustomContextHelper;
-
-template <typename Traits>
-struct CustomContextHelper<Traits, true> {
- template <typename MaybeConstUserType>
- static void* SetUp(MaybeConstUserType& input, SerializationContext* context) {
- void* custom_context = Traits::SetUpContext(input);
- if (!context->custom_contexts)
- context->custom_contexts.reset(new std::queue<void*>());
- context->custom_contexts->push(custom_context);
- return custom_context;
- }
-
- static void* GetNext(SerializationContext* context) {
- void* custom_context = context->custom_contexts->front();
- context->custom_contexts->pop();
- return custom_context;
- }
-
- template <typename MaybeConstUserType>
- static void TearDown(MaybeConstUserType& input, void* custom_context) {
- Traits::TearDownContext(input, custom_context);
- }
-};
-
-template <typename Traits>
-struct CustomContextHelper<Traits, false> {
- template <typename MaybeConstUserType>
- static void* SetUp(MaybeConstUserType& input, SerializationContext* context) {
- return nullptr;
- }
-
- static void* GetNext(SerializationContext* context) { return nullptr; }
-
- template <typename MaybeConstUserType>
- static void TearDown(MaybeConstUserType& input, void* custom_context) {
- DCHECK(!custom_context);
- }
-};
-
-template <typename ReturnType, typename ParamType, typename InputUserType>
-ReturnType CallWithContext(ReturnType (*f)(ParamType, void*),
- InputUserType&& input,
- void* context) {
- return f(std::forward<InputUserType>(input), context);
-}
-
-template <typename ReturnType, typename ParamType, typename InputUserType>
-ReturnType CallWithContext(ReturnType (*f)(ParamType),
- InputUserType&& input,
- void* context) {
- return f(std::forward<InputUserType>(input));
-}
-
-template <typename T, typename MaybeConstUserType>
-struct HasGetBeginMethod {
- template <typename U>
- static char Test(decltype(U::GetBegin(std::declval<MaybeConstUserType&>()))*);
- template <typename U>
- static int Test(...);
- static const bool value = sizeof(Test<T>(0)) == sizeof(char);
-
- private:
- EnsureTypeIsComplete<T> check_t_;
-};
-
-template <
- typename Traits,
- typename MaybeConstUserType,
- typename std::enable_if<
- HasGetBeginMethod<Traits, MaybeConstUserType>::value>::type* = nullptr>
-decltype(Traits::GetBegin(std::declval<MaybeConstUserType&>()))
-CallGetBeginIfExists(MaybeConstUserType& input) {
- return Traits::GetBegin(input);
-}
-
-template <
- typename Traits,
- typename MaybeConstUserType,
- typename std::enable_if<
- !HasGetBeginMethod<Traits, MaybeConstUserType>::value>::type* = nullptr>
-size_t CallGetBeginIfExists(MaybeConstUserType& input) {
- return 0;
-}
-
-template <typename T, typename MaybeConstUserType>
-struct HasGetDataMethod {
- template <typename U>
- static char Test(decltype(U::GetData(std::declval<MaybeConstUserType&>()))*);
- template <typename U>
- static int Test(...);
- static const bool value = sizeof(Test<T>(0)) == sizeof(char);
-
- private:
- EnsureTypeIsComplete<T> check_t_;
-};
-
-template <
- typename Traits,
- typename MaybeConstUserType,
- typename std::enable_if<
- HasGetDataMethod<Traits, MaybeConstUserType>::value>::type* = nullptr>
-decltype(Traits::GetData(std::declval<MaybeConstUserType&>()))
-CallGetDataIfExists(MaybeConstUserType& input) {
- return Traits::GetData(input);
-}
-
-template <
- typename Traits,
- typename MaybeConstUserType,
- typename std::enable_if<
- !HasGetDataMethod<Traits, MaybeConstUserType>::value>::type* = nullptr>
-void* CallGetDataIfExists(MaybeConstUserType& input) {
- return nullptr;
-}
-
-} // namespace internal
-} // namespace mojo
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_SERIALIZATION_UTIL_H_