// services/audio/public/mojom/system_info.mojom-params-data.h is auto generated by mojom_bindings_generator.py, do not edit

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

#ifndef SERVICES_AUDIO_PUBLIC_MOJOM_SYSTEM_INFO_MOJOM_PARAMS_DATA_H_
#define SERVICES_AUDIO_PUBLIC_MOJOM_SYSTEM_INFO_MOJOM_PARAMS_DATA_H_
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field"
#endif

namespace mojo::internal {
class ValidationContext;
}


namespace audio::mojom {
namespace internal {
class  SystemInfo_GetInputStreamParameters_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputStreamParameters_Params_Data>;

  SystemInfo_GetInputStreamParameters_Params_Data();
  ~SystemInfo_GetInputStreamParameters_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputStreamParameters_Params_Data) == 16,
              "Bad sizeof(SystemInfo_GetInputStreamParameters_Params_Data)");
class  SystemInfo_GetInputStreamParameters_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::AudioParameters_Data> params;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputStreamParameters_ResponseParams_Data>;

  SystemInfo_GetInputStreamParameters_ResponseParams_Data();
  ~SystemInfo_GetInputStreamParameters_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputStreamParameters_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_GetInputStreamParameters_ResponseParams_Data)");
class  SystemInfo_GetOutputStreamParameters_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetOutputStreamParameters_Params_Data>;

  SystemInfo_GetOutputStreamParameters_Params_Data();
  ~SystemInfo_GetOutputStreamParameters_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetOutputStreamParameters_Params_Data) == 16,
              "Bad sizeof(SystemInfo_GetOutputStreamParameters_Params_Data)");
class  SystemInfo_GetOutputStreamParameters_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::AudioParameters_Data> params;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetOutputStreamParameters_ResponseParams_Data>;

  SystemInfo_GetOutputStreamParameters_ResponseParams_Data();
  ~SystemInfo_GetOutputStreamParameters_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetOutputStreamParameters_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_GetOutputStreamParameters_ResponseParams_Data)");
class  SystemInfo_HasInputDevices_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_HasInputDevices_Params_Data>;

  SystemInfo_HasInputDevices_Params_Data();
  ~SystemInfo_HasInputDevices_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_HasInputDevices_Params_Data) == 8,
              "Bad sizeof(SystemInfo_HasInputDevices_Params_Data)");
class  SystemInfo_HasInputDevices_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint8_t has_input_devices : 1;
  uint8_t padfinal_[7];

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_HasInputDevices_ResponseParams_Data>;

  SystemInfo_HasInputDevices_ResponseParams_Data();
  ~SystemInfo_HasInputDevices_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_HasInputDevices_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_HasInputDevices_ResponseParams_Data)");
class  SystemInfo_HasOutputDevices_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_HasOutputDevices_Params_Data>;

  SystemInfo_HasOutputDevices_Params_Data();
  ~SystemInfo_HasOutputDevices_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_HasOutputDevices_Params_Data) == 8,
              "Bad sizeof(SystemInfo_HasOutputDevices_Params_Data)");
class  SystemInfo_HasOutputDevices_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint8_t has_output_devices : 1;
  uint8_t padfinal_[7];

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_HasOutputDevices_ResponseParams_Data>;

  SystemInfo_HasOutputDevices_ResponseParams_Data();
  ~SystemInfo_HasOutputDevices_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_HasOutputDevices_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_HasOutputDevices_ResponseParams_Data)");
class  SystemInfo_GetInputDeviceDescriptions_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputDeviceDescriptions_Params_Data>;

  SystemInfo_GetInputDeviceDescriptions_Params_Data();
  ~SystemInfo_GetInputDeviceDescriptions_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputDeviceDescriptions_Params_Data) == 8,
              "Bad sizeof(SystemInfo_GetInputDeviceDescriptions_Params_Data)");
class  SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::Array_Data<mojo::internal::Pointer<::audio::mojom::internal::AudioDeviceDescription_Data>>> device_descriptions;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data>;

  SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data();
  ~SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data)");
class  SystemInfo_GetOutputDeviceDescriptions_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetOutputDeviceDescriptions_Params_Data>;

  SystemInfo_GetOutputDeviceDescriptions_Params_Data();
  ~SystemInfo_GetOutputDeviceDescriptions_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetOutputDeviceDescriptions_Params_Data) == 8,
              "Bad sizeof(SystemInfo_GetOutputDeviceDescriptions_Params_Data)");
class  SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::Array_Data<mojo::internal::Pointer<::audio::mojom::internal::AudioDeviceDescription_Data>>> device_descriptions;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data>;

  SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data();
  ~SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data)");
class  SystemInfo_GetAssociatedOutputDeviceID_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> input_device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetAssociatedOutputDeviceID_Params_Data>;

  SystemInfo_GetAssociatedOutputDeviceID_Params_Data();
  ~SystemInfo_GetAssociatedOutputDeviceID_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetAssociatedOutputDeviceID_Params_Data) == 16,
              "Bad sizeof(SystemInfo_GetAssociatedOutputDeviceID_Params_Data)");
class  SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> associated_output_device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data>;

  SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data();
  ~SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data) == 16,
              "Bad sizeof(SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data)");
class  SystemInfo_GetInputDeviceInfo_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> input_device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputDeviceInfo_Params_Data>;

  SystemInfo_GetInputDeviceInfo_Params_Data();
  ~SystemInfo_GetInputDeviceInfo_Params_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputDeviceInfo_Params_Data) == 16,
              "Bad sizeof(SystemInfo_GetInputDeviceInfo_Params_Data)");
class  SystemInfo_GetInputDeviceInfo_ResponseParams_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::AudioParameters_Data> input_params;
  mojo::internal::Pointer<mojo::internal::String_Data> associated_output_device_id;

 private:
  friend class mojo::internal::MessageFragment<SystemInfo_GetInputDeviceInfo_ResponseParams_Data>;

  SystemInfo_GetInputDeviceInfo_ResponseParams_Data();
  ~SystemInfo_GetInputDeviceInfo_ResponseParams_Data() = delete;
};
static_assert(sizeof(SystemInfo_GetInputDeviceInfo_ResponseParams_Data) == 24,
              "Bad sizeof(SystemInfo_GetInputDeviceInfo_ResponseParams_Data)");

}  // namespace internal


class SystemInfo_GetInputStreamParameters_ParamsDataView {
 public:
  SystemInfo_GetInputStreamParameters_ParamsDataView() = default;

  SystemInfo_GetInputStreamParameters_ParamsDataView(
      internal::SystemInfo_GetInputStreamParameters_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadDeviceId(UserType* output) {
    
    auto* pointer = data_->device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetInputStreamParameters_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetInputStreamParameters_ResponseParamsDataView {
 public:
  SystemInfo_GetInputStreamParameters_ResponseParamsDataView() = default;

  SystemInfo_GetInputStreamParameters_ResponseParamsDataView(
      internal::SystemInfo_GetInputStreamParameters_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetParamsDataView(
      ::media::mojom::AudioParametersDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadParams(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        ::media::mojom::AudioParametersDataView, UserType>(),
    "Attempting to read the optional `params` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadParams` instead "
    "of `ReadParams if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->params.Get();
    return mojo::internal::Deserialize<::media::mojom::AudioParametersDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetInputStreamParameters_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetOutputStreamParameters_ParamsDataView {
 public:
  SystemInfo_GetOutputStreamParameters_ParamsDataView() = default;

  SystemInfo_GetOutputStreamParameters_ParamsDataView(
      internal::SystemInfo_GetOutputStreamParameters_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadDeviceId(UserType* output) {
    
    auto* pointer = data_->device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetOutputStreamParameters_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetOutputStreamParameters_ResponseParamsDataView {
 public:
  SystemInfo_GetOutputStreamParameters_ResponseParamsDataView() = default;

  SystemInfo_GetOutputStreamParameters_ResponseParamsDataView(
      internal::SystemInfo_GetOutputStreamParameters_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetParamsDataView(
      ::media::mojom::AudioParametersDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadParams(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        ::media::mojom::AudioParametersDataView, UserType>(),
    "Attempting to read the optional `params` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadParams` instead "
    "of `ReadParams if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->params.Get();
    return mojo::internal::Deserialize<::media::mojom::AudioParametersDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetOutputStreamParameters_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_HasInputDevices_ParamsDataView {
 public:
  SystemInfo_HasInputDevices_ParamsDataView() = default;

  SystemInfo_HasInputDevices_ParamsDataView(
      internal::SystemInfo_HasInputDevices_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::SystemInfo_HasInputDevices_Params_Data* data_ = nullptr;
};


class SystemInfo_HasInputDevices_ResponseParamsDataView {
 public:
  SystemInfo_HasInputDevices_ResponseParamsDataView() = default;

  SystemInfo_HasInputDevices_ResponseParamsDataView(
      internal::SystemInfo_HasInputDevices_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool has_input_devices() const {
    return data_->has_input_devices;
  }
 private:
  internal::SystemInfo_HasInputDevices_ResponseParams_Data* data_ = nullptr;
};


class SystemInfo_HasOutputDevices_ParamsDataView {
 public:
  SystemInfo_HasOutputDevices_ParamsDataView() = default;

  SystemInfo_HasOutputDevices_ParamsDataView(
      internal::SystemInfo_HasOutputDevices_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::SystemInfo_HasOutputDevices_Params_Data* data_ = nullptr;
};


class SystemInfo_HasOutputDevices_ResponseParamsDataView {
 public:
  SystemInfo_HasOutputDevices_ResponseParamsDataView() = default;

  SystemInfo_HasOutputDevices_ResponseParamsDataView(
      internal::SystemInfo_HasOutputDevices_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool has_output_devices() const {
    return data_->has_output_devices;
  }
 private:
  internal::SystemInfo_HasOutputDevices_ResponseParams_Data* data_ = nullptr;
};


class SystemInfo_GetInputDeviceDescriptions_ParamsDataView {
 public:
  SystemInfo_GetInputDeviceDescriptions_ParamsDataView() = default;

  SystemInfo_GetInputDeviceDescriptions_ParamsDataView(
      internal::SystemInfo_GetInputDeviceDescriptions_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::SystemInfo_GetInputDeviceDescriptions_Params_Data* data_ = nullptr;
};


class SystemInfo_GetInputDeviceDescriptions_ResponseParamsDataView {
 public:
  SystemInfo_GetInputDeviceDescriptions_ResponseParamsDataView() = default;

  SystemInfo_GetInputDeviceDescriptions_ResponseParamsDataView(
      internal::SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetDeviceDescriptionsDataView(
      mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>* output);

  template <typename UserType>
  [[nodiscard]] bool ReadDeviceDescriptions(UserType* output) {
    
    auto* pointer = data_->device_descriptions.Get();
    return mojo::internal::Deserialize<mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetInputDeviceDescriptions_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetOutputDeviceDescriptions_ParamsDataView {
 public:
  SystemInfo_GetOutputDeviceDescriptions_ParamsDataView() = default;

  SystemInfo_GetOutputDeviceDescriptions_ParamsDataView(
      internal::SystemInfo_GetOutputDeviceDescriptions_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::SystemInfo_GetOutputDeviceDescriptions_Params_Data* data_ = nullptr;
};


class SystemInfo_GetOutputDeviceDescriptions_ResponseParamsDataView {
 public:
  SystemInfo_GetOutputDeviceDescriptions_ResponseParamsDataView() = default;

  SystemInfo_GetOutputDeviceDescriptions_ResponseParamsDataView(
      internal::SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetDeviceDescriptionsDataView(
      mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>* output);

  template <typename UserType>
  [[nodiscard]] bool ReadDeviceDescriptions(UserType* output) {
    
    auto* pointer = data_->device_descriptions.Get();
    return mojo::internal::Deserialize<mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetOutputDeviceDescriptions_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetAssociatedOutputDeviceID_ParamsDataView {
 public:
  SystemInfo_GetAssociatedOutputDeviceID_ParamsDataView() = default;

  SystemInfo_GetAssociatedOutputDeviceID_ParamsDataView(
      internal::SystemInfo_GetAssociatedOutputDeviceID_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetInputDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadInputDeviceId(UserType* output) {
    
    auto* pointer = data_->input_device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetAssociatedOutputDeviceID_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetAssociatedOutputDeviceID_ResponseParamsDataView {
 public:
  SystemInfo_GetAssociatedOutputDeviceID_ResponseParamsDataView() = default;

  SystemInfo_GetAssociatedOutputDeviceID_ResponseParamsDataView(
      internal::SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetAssociatedOutputDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadAssociatedOutputDeviceId(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        mojo::StringDataView, UserType>(),
    "Attempting to read the optional `associated_output_device_id` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadAssociatedOutputDeviceId` instead "
    "of `ReadAssociatedOutputDeviceId if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->associated_output_device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetAssociatedOutputDeviceID_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetInputDeviceInfo_ParamsDataView {
 public:
  SystemInfo_GetInputDeviceInfo_ParamsDataView() = default;

  SystemInfo_GetInputDeviceInfo_ParamsDataView(
      internal::SystemInfo_GetInputDeviceInfo_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetInputDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadInputDeviceId(UserType* output) {
    
    auto* pointer = data_->input_device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetInputDeviceInfo_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SystemInfo_GetInputDeviceInfo_ResponseParamsDataView {
 public:
  SystemInfo_GetInputDeviceInfo_ResponseParamsDataView() = default;

  SystemInfo_GetInputDeviceInfo_ResponseParamsDataView(
      internal::SystemInfo_GetInputDeviceInfo_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetInputParamsDataView(
      ::media::mojom::AudioParametersDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadInputParams(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        ::media::mojom::AudioParametersDataView, UserType>(),
    "Attempting to read the optional `input_params` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadInputParams` instead "
    "of `ReadInputParams if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->input_params.Get();
    return mojo::internal::Deserialize<::media::mojom::AudioParametersDataView>(
        pointer, output, message_);
  }
  inline void GetAssociatedOutputDeviceIdDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadAssociatedOutputDeviceId(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        mojo::StringDataView, UserType>(),
    "Attempting to read the optional `associated_output_device_id` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadAssociatedOutputDeviceId` instead "
    "of `ReadAssociatedOutputDeviceId if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->associated_output_device_id.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::SystemInfo_GetInputDeviceInfo_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};

inline void SystemInfo_GetInputStreamParameters_ParamsDataView::GetDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void SystemInfo_GetInputStreamParameters_ResponseParamsDataView::GetParamsDataView(
    ::media::mojom::AudioParametersDataView* output) {
  auto pointer = data_->params.Get();
  *output = ::media::mojom::AudioParametersDataView(pointer, message_);
}


inline void SystemInfo_GetOutputStreamParameters_ParamsDataView::GetDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void SystemInfo_GetOutputStreamParameters_ResponseParamsDataView::GetParamsDataView(
    ::media::mojom::AudioParametersDataView* output) {
  auto pointer = data_->params.Get();
  *output = ::media::mojom::AudioParametersDataView(pointer, message_);
}












inline void SystemInfo_GetInputDeviceDescriptions_ResponseParamsDataView::GetDeviceDescriptionsDataView(
    mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>* output) {
  auto pointer = data_->device_descriptions.Get();
  *output = mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>(pointer, message_);
}




inline void SystemInfo_GetOutputDeviceDescriptions_ResponseParamsDataView::GetDeviceDescriptionsDataView(
    mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>* output) {
  auto pointer = data_->device_descriptions.Get();
  *output = mojo::ArrayDataView<::audio::mojom::AudioDeviceDescriptionDataView>(pointer, message_);
}


inline void SystemInfo_GetAssociatedOutputDeviceID_ParamsDataView::GetInputDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->input_device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void SystemInfo_GetAssociatedOutputDeviceID_ResponseParamsDataView::GetAssociatedOutputDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->associated_output_device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void SystemInfo_GetInputDeviceInfo_ParamsDataView::GetInputDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->input_device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void SystemInfo_GetInputDeviceInfo_ResponseParamsDataView::GetInputParamsDataView(
    ::media::mojom::AudioParametersDataView* output) {
  auto pointer = data_->input_params.Get();
  *output = ::media::mojom::AudioParametersDataView(pointer, message_);
}
inline void SystemInfo_GetInputDeviceInfo_ResponseParamsDataView::GetAssociatedOutputDeviceIdDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->associated_output_device_id.Get();
  *output = mojo::StringDataView(pointer, message_);
}



}  // audio::mojom

#if defined(__clang__)
#pragma clang diagnostic pop
#endif

#endif  // SERVICES_AUDIO_PUBLIC_MOJOM_SYSTEM_INFO_MOJOM_PARAMS_DATA_H_