chromium/out/Default/gen/services/device/public/mojom/usb_device.mojom-shared.h

// services/device/public/mojom/usb_device.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit

// 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 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;


}  // device::mojom

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 internal
}  // namespace mojo


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) {}
// Interface base classes. They are used for type safety check.
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 {};



}  // device::mojom

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 std

namespace mojo {


namespace internal {

Serializer< ::device::mojom::UsbOpenDeviceSuccess, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbOpenDeviceError, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbClaimInterfaceResult, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbTransferDirection, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbControlTransferType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbControlTransferRecipient, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbTransferType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbSynchronizationType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbUsageType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbTransferStatus, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbEndpointInfoDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbAlternateInterfaceInfoDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbInterfaceInfoDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbConfigurationInfoDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbDeviceInfoDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbControlTransferParamsDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbIsochronousPacketDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::device::mojom::UsbOpenDeviceResultDataView, MaybeConstUserType>;

}  // namespace internal

}  // namespace mojo


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) {}








}  // device::mojom

// Declare TraceFormatTraits for enums, which should be defined in ::perfetto
// namespace.

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbOpenDeviceSuccess> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbOpenDeviceError> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbClaimInterfaceResult> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbTransferDirection> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbControlTransferType> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbControlTransferRecipient> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbTransferType> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbSynchronizationType> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbUsageType> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::device::mojom::UsbTransferStatus> {};

} // namespace perfetto

#endif  // SERVICES_DEVICE_PUBLIC_MOJOM_USB_DEVICE_MOJOM_SHARED_H_