#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBAUTHN_AUTHENTICATOR_MOJOM_SHARED_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBAUTHN_AUTHENTICATOR_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 "third_party/blink/public/mojom/webauthn/authenticator.mojom-shared-internal.h"
#include "components/payments/mojom/payment_request_data.mojom-shared.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "third_party/blink/public/mojom/payments/payment_credential.mojom-shared.h"
#include "url/mojom/origin.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"
#include "base/component_export.h"
namespace blink::mojom {
class CommonCredentialInfoDataView;
class SupplementalPubKeysResponseDataView;
class MakeCredentialAuthenticatorResponseDataView;
class GetAssertionAuthenticatorResponseDataView;
class AuthenticationExtensionsClientOutputsDataView;
class PublicKeyCredentialRpEntityDataView;
class PublicKeyCredentialUserEntityDataView;
class PublicKeyCredentialParametersDataView;
class CableAuthenticationDataView;
class PRFValuesDataView;
class PaymentOptionsDataView;
class PaymentCredentialInstrumentDataView;
class RemoteDesktopClientOverrideDataView;
class SupplementalPubKeysRequestDataView;
class PublicKeyCredentialRequestOptionsDataView;
class AuthenticationExtensionsClientInputsDataView;
class AuthenticatorSelectionCriteriaDataView;
class PublicKeyCredentialCreationOptionsDataView;
class PublicKeyCredentialDescriptorDataView;
class WebAuthnDOMExceptionDetailsDataView;
class PublicKeyCredentialReportOptionsDataView;
class AllAcceptedCredentialsOptionsDataView;
class CurrentUserDetailsOptionsDataView;
class WebAuthnClientCapabilityDataView;
}
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::blink::mojom::CommonCredentialInfoDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::SupplementalPubKeysResponseDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::MakeCredentialAuthenticatorResponseDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::GetAssertionAuthenticatorResponseDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::AuthenticationExtensionsClientOutputsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialRpEntityDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialUserEntityDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialParametersDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::CableAuthenticationDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PRFValuesDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PaymentOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PaymentCredentialInstrumentDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::RemoteDesktopClientOverrideDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::SupplementalPubKeysRequestDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialRequestOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::AuthenticationExtensionsClientInputsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::AuthenticatorSelectionCriteriaDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialCreationOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialDescriptorDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::WebAuthnDOMExceptionDetailsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::PublicKeyCredentialReportOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::AllAcceptedCredentialsOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::CurrentUserDetailsOptionsDataView> { … };
template <>
struct MojomTypeTraits<::blink::mojom::WebAuthnClientCapabilityDataView> { … };
}
}
namespace blinkmojom
namespace std {
template <>
struct hash<::blink::mojom::AuthenticatorStatus>
: public mojo::internal::EnumHashImpl<::blink::mojom::AuthenticatorStatus> { … };
template <>
struct hash<::blink::mojom::AuthenticatorTransport>
: public mojo::internal::EnumHashImpl<::blink::mojom::AuthenticatorTransport> { … };
template <>
struct hash<::blink::mojom::Hint>
: public mojo::internal::EnumHashImpl<::blink::mojom::Hint> { … };
template <>
struct hash<::blink::mojom::UserVerificationRequirement>
: public mojo::internal::EnumHashImpl<::blink::mojom::UserVerificationRequirement> { … };
template <>
struct hash<::blink::mojom::ResidentKeyRequirement>
: public mojo::internal::EnumHashImpl<::blink::mojom::ResidentKeyRequirement> { … };
template <>
struct hash<::blink::mojom::AuthenticatorAttachment>
: public mojo::internal::EnumHashImpl<::blink::mojom::AuthenticatorAttachment> { … };
template <>
struct hash<::blink::mojom::ProtectionPolicy>
: public mojo::internal::EnumHashImpl<::blink::mojom::ProtectionPolicy> { … };
template <>
struct hash<::blink::mojom::LargeBlobSupport>
: public mojo::internal::EnumHashImpl<::blink::mojom::LargeBlobSupport> { … };
template <>
struct hash<::blink::mojom::AttestationConveyancePreference>
: public mojo::internal::EnumHashImpl<::blink::mojom::AttestationConveyancePreference> { … };
template <>
struct hash<::blink::mojom::PublicKeyCredentialType>
: public mojo::internal::EnumHashImpl<::blink::mojom::PublicKeyCredentialType> { … };
}
namespace mojo {
namespace internal {
Serializer< ::blink::mojom::AuthenticatorStatus, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AuthenticatorTransport, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::Hint, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::UserVerificationRequirement, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::ResidentKeyRequirement, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AuthenticatorAttachment, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::ProtectionPolicy, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::LargeBlobSupport, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AttestationConveyancePreference, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::CommonCredentialInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::SupplementalPubKeysResponseDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::MakeCredentialAuthenticatorResponseDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::GetAssertionAuthenticatorResponseDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AuthenticationExtensionsClientOutputsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialRpEntityDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialUserEntityDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialParametersDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::CableAuthenticationDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PRFValuesDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PaymentOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PaymentCredentialInstrumentDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::RemoteDesktopClientOverrideDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::SupplementalPubKeysRequestDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialRequestOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AuthenticationExtensionsClientInputsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AuthenticatorSelectionCriteriaDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialCreationOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialDescriptorDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::WebAuthnDOMExceptionDetailsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::PublicKeyCredentialReportOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::AllAcceptedCredentialsOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::CurrentUserDetailsOptionsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::blink::mojom::WebAuthnClientCapabilityDataView, MaybeConstUserType>;
}
}
namespace blink::mojom {
inline void CommonCredentialInfoDataView::GetIdDataView(
mojo::StringDataView* output) { … }
inline void CommonCredentialInfoDataView::GetRawIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CommonCredentialInfoDataView::GetClientDataJsonDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CommonCredentialInfoDataView::GetAuthenticatorDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void SupplementalPubKeysResponseDataView::GetSignaturesDataView(
mojo::ArrayDataView<mojo::ArrayDataView<uint8_t>>* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetInfoDataView(
CommonCredentialInfoDataView* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetAttestationObjectDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetTransportsDataView(
mojo::ArrayDataView<AuthenticatorTransport>* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetPrfResultsDataView(
PRFValuesDataView* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetPublicKeyDerDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void MakeCredentialAuthenticatorResponseDataView::GetSupplementalPubKeysDataView(
SupplementalPubKeysResponseDataView* output) { … }
inline void GetAssertionAuthenticatorResponseDataView::GetInfoDataView(
CommonCredentialInfoDataView* output) { … }
inline void GetAssertionAuthenticatorResponseDataView::GetSignatureDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void GetAssertionAuthenticatorResponseDataView::GetUserHandleDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void GetAssertionAuthenticatorResponseDataView::GetExtensionsDataView(
AuthenticationExtensionsClientOutputsDataView* output) { … }
inline void AuthenticationExtensionsClientOutputsDataView::GetPrfResultsDataView(
PRFValuesDataView* output) { … }
inline void AuthenticationExtensionsClientOutputsDataView::GetLargeBlobDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void AuthenticationExtensionsClientOutputsDataView::GetGetCredBlobDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void AuthenticationExtensionsClientOutputsDataView::GetSupplementalPubKeysDataView(
SupplementalPubKeysResponseDataView* output) { … }
inline void PublicKeyCredentialRpEntityDataView::GetIdDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialRpEntityDataView::GetNameDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialUserEntityDataView::GetIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialUserEntityDataView::GetNameDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialUserEntityDataView::GetDisplayNameDataView(
mojo::StringDataView* output) { … }
inline void CableAuthenticationDataView::GetClientEidDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CableAuthenticationDataView::GetAuthenticatorEidDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CableAuthenticationDataView::GetSessionPreKeyDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CableAuthenticationDataView::GetServerLinkDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CableAuthenticationDataView::GetExperimentsDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PRFValuesDataView::GetIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PRFValuesDataView::GetFirstDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PRFValuesDataView::GetSecondDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PaymentOptionsDataView::GetTotalDataView(
::payments::mojom::PaymentCurrencyAmountDataView* output) { … }
inline void PaymentOptionsDataView::GetInstrumentDataView(
PaymentCredentialInstrumentDataView* output) { … }
inline void PaymentOptionsDataView::GetPayeeNameDataView(
mojo::StringDataView* output) { … }
inline void PaymentOptionsDataView::GetPayeeOriginDataView(
::url::mojom::OriginDataView* output) { … }
inline void PaymentCredentialInstrumentDataView::GetDisplayNameDataView(
mojo::StringDataView* output) { … }
inline void PaymentCredentialInstrumentDataView::GetIconDataView(
::url::mojom::UrlDataView* output) { … }
inline void RemoteDesktopClientOverrideDataView::GetOriginDataView(
::url::mojom::OriginDataView* output) { … }
inline void SupplementalPubKeysRequestDataView::GetAttestationFormatsDataView(
mojo::ArrayDataView<mojo::StringDataView>* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetChallengeDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetTimeoutDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetRelyingPartyIdDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetAllowCredentialsDataView(
mojo::ArrayDataView<PublicKeyCredentialDescriptorDataView>* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetHintsDataView(
mojo::ArrayDataView<Hint>* output) { … }
inline void PublicKeyCredentialRequestOptionsDataView::GetExtensionsDataView(
AuthenticationExtensionsClientInputsDataView* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetAppidDataView(
mojo::StringDataView* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetCableAuthenticationDataDataView(
mojo::ArrayDataView<CableAuthenticationDataView>* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetPrfInputsDataView(
mojo::ArrayDataView<PRFValuesDataView>* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetLargeBlobWriteDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetRemoteDesktopClientOverrideDataView(
RemoteDesktopClientOverrideDataView* output) { … }
inline void AuthenticationExtensionsClientInputsDataView::GetSupplementalPubKeysDataView(
SupplementalPubKeysRequestDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetRelyingPartyDataView(
PublicKeyCredentialRpEntityDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetUserDataView(
PublicKeyCredentialUserEntityDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetChallengeDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetPublicKeyParametersDataView(
mojo::ArrayDataView<PublicKeyCredentialParametersDataView>* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetTimeoutDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetExcludeCredentialsDataView(
mojo::ArrayDataView<PublicKeyCredentialDescriptorDataView>* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetAuthenticatorSelectionDataView(
AuthenticatorSelectionCriteriaDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetHintsDataView(
mojo::ArrayDataView<Hint>* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetPrfInputDataView(
PRFValuesDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetAppidExcludeDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetCredBlobDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetRemoteDesktopClientOverrideDataView(
RemoteDesktopClientOverrideDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetSupplementalPubKeysDataView(
SupplementalPubKeysRequestDataView* output) { … }
inline void PublicKeyCredentialCreationOptionsDataView::GetAttestationFormatsDataView(
mojo::ArrayDataView<mojo::StringDataView>* output) { … }
inline void PublicKeyCredentialDescriptorDataView::GetIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialDescriptorDataView::GetTransportsDataView(
mojo::ArrayDataView<AuthenticatorTransport>* output) { … }
inline void WebAuthnDOMExceptionDetailsDataView::GetNameDataView(
mojo::StringDataView* output) { … }
inline void WebAuthnDOMExceptionDetailsDataView::GetMessageDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialReportOptionsDataView::GetRelyingPartyIdDataView(
mojo::StringDataView* output) { … }
inline void PublicKeyCredentialReportOptionsDataView::GetUnknownCredentialIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void PublicKeyCredentialReportOptionsDataView::GetAllAcceptedCredentialsDataView(
AllAcceptedCredentialsOptionsDataView* output) { … }
inline void PublicKeyCredentialReportOptionsDataView::GetCurrentUserDetailsDataView(
CurrentUserDetailsOptionsDataView* output) { … }
inline void AllAcceptedCredentialsOptionsDataView::GetUserIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void AllAcceptedCredentialsOptionsDataView::GetAllAcceptedCredentialsIdsDataView(
mojo::ArrayDataView<mojo::ArrayDataView<uint8_t>>* output) { … }
inline void CurrentUserDetailsOptionsDataView::GetUserIdDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void CurrentUserDetailsOptionsDataView::GetNameDataView(
mojo::StringDataView* output) { … }
inline void CurrentUserDetailsOptionsDataView::GetDisplayNameDataView(
mojo::StringDataView* output) { … }
inline void WebAuthnClientCapabilityDataView::GetNameDataView(
mojo::StringDataView* output) { … }
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::AuthenticatorStatus> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::AuthenticatorTransport> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::Hint> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::UserVerificationRequirement> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::ResidentKeyRequirement> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::AuthenticatorAttachment> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::ProtectionPolicy> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::LargeBlobSupport> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::AttestationConveyancePreference> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::PublicKeyCredentialType> { … };
}
#endif