chromium/mojo/public/cpp/bindings/lib/native_enum_serialization.h

// Copyright 2016 The Chromium Authors
// 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_NATIVE_ENUM_SERIALIZATION_H_
#define MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_ENUM_SERIALIZATION_H_

#include <stddef.h>
#include <stdint.h>

#include <type_traits>

#include "base/check_op.h"
#include "base/pickle.h"
#include "ipc/ipc_param_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization_forward.h"
#include "mojo/public/cpp/bindings/native_enum.h"

namespace mojo {
namespace internal {

template <typename MaybeConstUserType>
struct NativeEnumSerializerImpl {};

struct UnmappedNativeEnumSerializerImpl {};

template <>
struct NativeEnumSerializerImpl<NativeEnum>
    : public UnmappedNativeEnumSerializerImpl {};

template <>
struct NativeEnumSerializerImpl<const NativeEnum>
    : public UnmappedNativeEnumSerializerImpl {};

Serializer<NativeEnum, MaybeConstUserType>;

}  // namespace internal
}  // namespace mojo

#endif  // MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_ENUM_SERIALIZATION_H_