// components/sqlite_vfs/mojom/sqlite_vfs.mojom-send-validation.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SQLITE_VFS_MOJOM_SQLITE_VFS_MOJOM_SEND_VALIDATION_H_
#define COMPONENTS_SQLITE_VFS_MOJOM_SQLITE_VFS_MOJOM_SEND_VALIDATION_H_

#include "components/sqlite_vfs/mojom/sqlite_vfs.mojom-shared-internal.h"
#include "mojo/public/mojom/base/file.mojom-shared.h"
#include "mojo/public/mojom/base/shared_memory.mojom-shared.h"

#include "components/sqlite_vfs/mojom/sqlite_vfs.mojom-data-view.h"

#include "mojo/public/cpp/bindings/lib/send_validation_type.h"
#include "mojo/public/cpp/bindings/lib/send_validation.h"

namespace mojo::internal {

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::sqlite_vfs::mojom::PendingReadOnlyFileSetDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::sqlite_vfs::mojom::PendingReadOnlyFileSetDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::sqlite_vfs::mojom::internal::PendingReadOnlyFileSet_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::db_file(input)) in_db_file = Traits::db_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->db_file)::BaseType> db_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ReadOnlyFileDataView, send_validation>(
        in_db_file,
        db_file_fragment);

      fragment->db_file.Set(
          db_file_fragment.is_null() ? nullptr : db_file_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->db_file.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null db_file in PendingReadOnlyFileSet struct");

      decltype(Traits::journal_file(input)) in_journal_file = Traits::journal_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->journal_file)::BaseType> journal_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ReadOnlyFileDataView, send_validation>(
        in_journal_file,
        journal_file_fragment);

      fragment->journal_file.Set(
          journal_file_fragment.is_null() ? nullptr : journal_file_fragment.data());

      decltype(Traits::wal_file(input)) in_wal_file = Traits::wal_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->wal_file)::BaseType> wal_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ReadOnlyFileDataView, send_validation>(
        in_wal_file,
        wal_file_fragment);

      fragment->wal_file.Set(
          wal_file_fragment.is_null() ? nullptr : wal_file_fragment.data());

      decltype(Traits::wal_index_file(input)) in_wal_index_file = Traits::wal_index_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->wal_index_file)::BaseType> wal_index_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ReadOnlyFileDataView, send_validation>(
        in_wal_index_file,
        wal_index_file_fragment);

      fragment->wal_index_file.Set(
          wal_index_file_fragment.is_null() ? nullptr : wal_index_file_fragment.data());

      decltype(Traits::shared_lock(input)) in_shared_lock = Traits::shared_lock(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->shared_lock)::BaseType> shared_lock_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::UnsafeSharedMemoryRegionDataView, send_validation>(
        in_shared_lock,
        shared_lock_fragment);

      fragment->shared_lock.Set(
          shared_lock_fragment.is_null() ? nullptr : shared_lock_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->shared_lock.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null shared_lock in PendingReadOnlyFileSet struct");

      fragment->wal_mode = Traits::wal_mode(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::sqlite_vfs::mojom::PendingReadWriteFileSetDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::sqlite_vfs::mojom::PendingReadWriteFileSetDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::sqlite_vfs::mojom::internal::PendingReadWriteFileSet_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::db_file(input)) in_db_file = Traits::db_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->db_file)::BaseType> db_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::FileDataView, send_validation>(
        in_db_file,
        db_file_fragment);

      fragment->db_file.Set(
          db_file_fragment.is_null() ? nullptr : db_file_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->db_file.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null db_file in PendingReadWriteFileSet struct");

      decltype(Traits::journal_file(input)) in_journal_file = Traits::journal_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->journal_file)::BaseType> journal_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::FileDataView, send_validation>(
        in_journal_file,
        journal_file_fragment);

      fragment->journal_file.Set(
          journal_file_fragment.is_null() ? nullptr : journal_file_fragment.data());

      decltype(Traits::wal_file(input)) in_wal_file = Traits::wal_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->wal_file)::BaseType> wal_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::FileDataView, send_validation>(
        in_wal_file,
        wal_file_fragment);

      fragment->wal_file.Set(
          wal_file_fragment.is_null() ? nullptr : wal_file_fragment.data());

      decltype(Traits::wal_index_file(input)) in_wal_index_file = Traits::wal_index_file(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->wal_index_file)::BaseType> wal_index_file_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::FileDataView, send_validation>(
        in_wal_index_file,
        wal_index_file_fragment);

      fragment->wal_index_file.Set(
          wal_index_file_fragment.is_null() ? nullptr : wal_index_file_fragment.data());

      decltype(Traits::wal_index_file_read_only(input)) in_wal_index_file_read_only = Traits::wal_index_file_read_only(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->wal_index_file_read_only)::BaseType> wal_index_file_read_only_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ReadOnlyFileDataView, send_validation>(
        in_wal_index_file_read_only,
        wal_index_file_read_only_fragment);

      fragment->wal_index_file_read_only.Set(
          wal_index_file_read_only_fragment.is_null() ? nullptr : wal_index_file_read_only_fragment.data());

      decltype(Traits::shared_lock(input)) in_shared_lock = Traits::shared_lock(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->shared_lock)::BaseType> shared_lock_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::UnsafeSharedMemoryRegionDataView, send_validation>(
        in_shared_lock,
        shared_lock_fragment);

      fragment->shared_lock.Set(
          shared_lock_fragment.is_null() ? nullptr : shared_lock_fragment.data());

      fragment->wal_mode = Traits::wal_mode(input);
  }
};

}  // namespace mojo::internal

#endif  // COMPONENTS_SQLITE_VFS_MOJOM_SQLITE_VFS_MOJOM_SEND_VALIDATION_H_