#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_
#define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_
#include <stddef.h>
#include <string.h>
#include <limits>
#include <type_traits>
#include <utility>
#include <vector>
#include "base/logging.h"
#include "base/memory/raw_ptr_exclusion.h"
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/lib/array_internal.h"
#include "mojo/public/cpp/bindings/lib/message_fragment.h"
#include "mojo/public/cpp/bindings/lib/serialization_forward.h"
#include "mojo/public/cpp/bindings/lib/template_util.h"
#include "mojo/public/cpp/bindings/lib/validation_errors.h"
namespace mojo {
class Message;
namespace internal {
template <typename Traits,
typename MaybeConstUserType,
bool HasGetBegin =
HasGetBeginMethod<Traits, MaybeConstUserType>::value>
class ArrayIterator { … };
ArrayIterator<Traits, MaybeConstUserType, true>;
ArrayIterator<Traits, MaybeConstUserType, false>;
template <typename MojomType,
typename MaybeConstUserType,
typename UserTypeIterator,
typename EnableType = void>
struct ArraySerializer;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, std::enable_if_t<BelongsTo<typename MojomType::Element, MojomTypeCategory::kPOD>::value>>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, typename std::enable_if<BelongsTo<typename MojomType::Element, MojomTypeCategory::kEnum>::value>::type>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, std::enable_if_t<BelongsTo<typename MojomType::Element, MojomTypeCategory::kEnum>::value>>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, typename std::enable_if<BelongsTo<typename MojomType::Element, MojomTypeCategory::kBoolean>::value>::type>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, typename std::enable_if<BelongsTo<typename MojomType::Element, MojomTypeCategory::kAssociatedInterface | MojomTypeCategory::kAssociatedInterfaceRequest | MojomTypeCategory::kHandle | MojomTypeCategory::kInterface | MojomTypeCategory::kInterfaceRequest>::value>::type>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, typename std::enable_if<BelongsTo<typename MojomType::Element, MojomTypeCategory::kArray | MojomTypeCategory::kMap | MojomTypeCategory::kString | MojomTypeCategory::kStruct>::value>::type>;
ArraySerializer<MojomType, MaybeConstUserType, UserTypeIterator, typename std::enable_if<BelongsTo<typename MojomType::Element, MojomTypeCategory::kUnion>::value>::type>;
Serializer<ArrayDataView<Element>, MaybeConstUserType>;
}
}
#endif