#ifndef SERVICES_DEVICE_PUBLIC_MOJOM_USB_DEVICE_MOJOM_SHARED_H_
#define SERVICES_DEVICE_PUBLIC_MOJOM_USB_DEVICE_MOJOM_SHARED_H_
#include <stdint.h>
#include <functional>
#include <iosfwd>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/interface_data_view.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "services/device/public/mojom/usb_device.mojom-shared-internal.h"
#include "mojo/public/mojom/base/read_only_buffer.mojom-shared.h"
#include "mojo/public/mojom/base/string16.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/system/data_pipe.h"
namespace device::mojom {
class UsbEndpointInfoDataView;
class UsbAlternateInterfaceInfoDataView;
class UsbInterfaceInfoDataView;
class UsbConfigurationInfoDataView;
class UsbDeviceInfoDataView;
class UsbControlTransferParamsDataView;
class UsbIsochronousPacketDataView;
class UsbOpenDeviceResultDataView;
}
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::device::mojom::UsbEndpointInfoDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbAlternateInterfaceInfoDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbInterfaceInfoDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbConfigurationInfoDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbDeviceInfoDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbControlTransferParamsDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbIsochronousPacketDataView> { … };
template <>
struct MojomTypeTraits<::device::mojom::UsbOpenDeviceResultDataView> { … };
}
}
namespace device::mojom {
enum class UsbOpenDeviceSuccess : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbOpenDeviceSuccess value);
inline bool IsKnownEnumValue(UsbOpenDeviceSuccess value) { … }
enum class UsbOpenDeviceError : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbOpenDeviceError value);
inline bool IsKnownEnumValue(UsbOpenDeviceError value) { … }
enum class UsbClaimInterfaceResult : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbClaimInterfaceResult value);
inline bool IsKnownEnumValue(UsbClaimInterfaceResult value) { … }
enum class UsbTransferDirection : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbTransferDirection value);
inline bool IsKnownEnumValue(UsbTransferDirection value) { … }
enum class UsbControlTransferType : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbControlTransferType value);
inline bool IsKnownEnumValue(UsbControlTransferType value) { … }
enum class UsbControlTransferRecipient : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbControlTransferRecipient value);
inline bool IsKnownEnumValue(UsbControlTransferRecipient value) { … }
enum class UsbTransferType : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbTransferType value);
inline bool IsKnownEnumValue(UsbTransferType value) { … }
enum class UsbSynchronizationType : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbSynchronizationType value);
inline bool IsKnownEnumValue(UsbSynchronizationType value) { … }
enum class UsbUsageType : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbUsageType value);
inline bool IsKnownEnumValue(UsbUsageType value) { … }
enum class UsbTransferStatus : int32_t { … };
std::ostream& operator<<(std::ostream& os, UsbTransferStatus value);
inline bool IsKnownEnumValue(UsbTransferStatus value) { … }
class UsbDeviceInterfaceBase { … };
UsbDevicePtrDataView;
UsbDeviceRequestDataView;
UsbDeviceAssociatedPtrInfoDataView;
UsbDeviceAssociatedRequestDataView;
class UsbDeviceClientInterfaceBase { … };
UsbDeviceClientPtrDataView;
UsbDeviceClientRequestDataView;
UsbDeviceClientAssociatedPtrInfoDataView;
UsbDeviceClientAssociatedRequestDataView;
class UsbEndpointInfoDataView { … };
class UsbAlternateInterfaceInfoDataView { … };
class UsbInterfaceInfoDataView { … };
class UsbConfigurationInfoDataView { … };
class UsbDeviceInfoDataView { … };
class UsbControlTransferParamsDataView { … };
class UsbIsochronousPacketDataView { … };
class UsbOpenDeviceResultDataView { … };
}
namespace std {
template <>
struct hash<::device::mojom::UsbOpenDeviceSuccess>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbOpenDeviceSuccess> { … };
template <>
struct hash<::device::mojom::UsbOpenDeviceError>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbOpenDeviceError> { … };
template <>
struct hash<::device::mojom::UsbClaimInterfaceResult>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbClaimInterfaceResult> { … };
template <>
struct hash<::device::mojom::UsbTransferDirection>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbTransferDirection> { … };
template <>
struct hash<::device::mojom::UsbControlTransferType>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbControlTransferType> { … };
template <>
struct hash<::device::mojom::UsbControlTransferRecipient>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbControlTransferRecipient> { … };
template <>
struct hash<::device::mojom::UsbTransferType>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbTransferType> { … };
template <>
struct hash<::device::mojom::UsbSynchronizationType>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbSynchronizationType> { … };
template <>
struct hash<::device::mojom::UsbUsageType>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbUsageType> { … };
template <>
struct hash<::device::mojom::UsbTransferStatus>
: public mojo::internal::EnumHashImpl<::device::mojom::UsbTransferStatus> { … };
}
namespace mojo {
namespace internal {
Serializer< ::device::mojom::UsbOpenDeviceSuccess, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbOpenDeviceError, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbClaimInterfaceResult, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbTransferDirection, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbControlTransferType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbControlTransferRecipient, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbTransferType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbSynchronizationType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbUsageType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbTransferStatus, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbEndpointInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbAlternateInterfaceInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbInterfaceInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbConfigurationInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbDeviceInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbControlTransferParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbIsochronousPacketDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::device::mojom::UsbOpenDeviceResultDataView, MaybeConstUserType>;
}
}
namespace device::mojom {
inline void UsbEndpointInfoDataView::GetExtraDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void UsbAlternateInterfaceInfoDataView::GetInterfaceNameDataView(
::mojo_base::mojom::String16DataView* output) { … }
inline void UsbAlternateInterfaceInfoDataView::GetEndpointsDataView(
mojo::ArrayDataView<UsbEndpointInfoDataView>* output) { … }
inline void UsbAlternateInterfaceInfoDataView::GetExtraDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void UsbInterfaceInfoDataView::GetAlternatesDataView(
mojo::ArrayDataView<UsbAlternateInterfaceInfoDataView>* output) { … }
inline void UsbConfigurationInfoDataView::GetConfigurationNameDataView(
::mojo_base::mojom::String16DataView* output) { … }
inline void UsbConfigurationInfoDataView::GetInterfacesDataView(
mojo::ArrayDataView<UsbInterfaceInfoDataView>* output) { … }
inline void UsbConfigurationInfoDataView::GetExtraDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void UsbDeviceInfoDataView::GetGuidDataView(
mojo::StringDataView* output) { … }
inline void UsbDeviceInfoDataView::GetManufacturerNameDataView(
::mojo_base::mojom::String16DataView* output) { … }
inline void UsbDeviceInfoDataView::GetProductNameDataView(
::mojo_base::mojom::String16DataView* output) { … }
inline void UsbDeviceInfoDataView::GetSerialNumberDataView(
::mojo_base::mojom::String16DataView* output) { … }
inline void UsbDeviceInfoDataView::GetWebusbLandingPageDataView(
::url::mojom::UrlDataView* output) { … }
inline void UsbDeviceInfoDataView::GetConfigurationsDataView(
mojo::ArrayDataView<UsbConfigurationInfoDataView>* output) { … }
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbOpenDeviceSuccess> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbOpenDeviceError> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbClaimInterfaceResult> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbTransferDirection> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbControlTransferType> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbControlTransferRecipient> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbTransferType> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbSynchronizationType> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbUsageType> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::device::mojom::UsbTransferStatus> { … };
}
#endif