blob: e774fa6ce8fbed1e0a33624a197ab86ece5f3af7 [file]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// WARNING: THIS FILE IS MACHINE GENERATED. DO NOT EDIT.
// Generated from the banjo.examples.api banjo file
#pragma once
#include <type_traits>
namespace ddk {
namespace internal {
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_bool, Apibool,
zx_status_t (C::*)(zx::handle handle, bool data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_int8, Apiint8,
zx_status_t (C::*)(zx::handle handle, int8_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_int16, Apiint16,
zx_status_t (C::*)(zx::handle handle, int16_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_int32, Apiint32,
zx_status_t (C::*)(zx::handle handle, int32_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_int64, Apiint64,
zx_status_t (C::*)(zx::handle handle, int64_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_uint8, Apiuint8,
zx_status_t (C::*)(zx::handle handle, uint8_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_uint16, Apiuint16,
zx_status_t (C::*)(zx::handle handle, uint16_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_uint32, Apiuint32,
zx_status_t (C::*)(zx::handle handle, uint32_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_uint64, Apiuint64,
zx_status_t (C::*)(zx::handle handle, uint64_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_float32, Apifloat32,
zx_status_t (C::*)(zx::handle handle, float data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_float64, Apifloat64,
zx_status_t (C::*)(zx::handle handle, double data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_duration, Apiduration,
zx_status_t (C::*)(zx::handle handle, zx_duration_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_koid, Apikoid,
zx_status_t (C::*)(zx::handle handle, zx_koid_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_paddr, Apipaddr,
zx_status_t (C::*)(zx::handle handle, zx_paddr_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_signals, Apisignals,
zx_status_t (C::*)(zx::handle handle, zx_signals_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_time, Apitime,
zx_status_t (C::*)(zx::handle handle, zx_time_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_vaddr, Apivaddr,
zx_status_t (C::*)(zx::handle handle, zx_vaddr_t data));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_bool, Apioutput_bool,
zx_status_t (C::*)(zx::handle handle, bool* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_int8, Apioutput_int8,
zx_status_t (C::*)(zx::handle handle, int8_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_int16, Apioutput_int16,
zx_status_t (C::*)(zx::handle handle, int16_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_int32, Apioutput_int32,
zx_status_t (C::*)(zx::handle handle, int32_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_int64, Apioutput_int64,
zx_status_t (C::*)(zx::handle handle, int64_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_uint8, Apioutput_uint8,
zx_status_t (C::*)(zx::handle handle, uint8_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_uint16, Apioutput_uint16,
zx_status_t (C::*)(zx::handle handle, uint16_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_uint32, Apioutput_uint32,
zx_status_t (C::*)(zx::handle handle, uint32_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_uint64, Apioutput_uint64,
zx_status_t (C::*)(zx::handle handle, uint64_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_float32, Apioutput_float32,
zx_status_t (C::*)(zx::handle handle, float* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_float64, Apioutput_float64,
zx_status_t (C::*)(zx::handle handle, double* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_duration, Apioutput_duration,
zx_status_t (C::*)(zx::handle handle, zx_duration_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_koid, Apioutput_koid,
zx_status_t (C::*)(zx::handle handle, zx_koid_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_paddr, Apioutput_paddr,
zx_status_t (C::*)(zx::handle handle, zx_paddr_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_signals, Apioutput_signals,
zx_status_t (C::*)(zx::handle handle, zx_signals_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_time, Apioutput_time,
zx_status_t (C::*)(zx::handle handle, zx_time_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_output_vaddr, Apioutput_vaddr,
zx_status_t (C::*)(zx::handle handle, zx_vaddr_t* out_result));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_void, Apireturn_void,
void (C::*)(zx::handle handle));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_status, Apireturn_status,
zx_status_t (C::*)(zx::handle handle));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_ticks, Apireturn_ticks,
zx_ticks_t (C::*)(zx::handle handle));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_time, Apireturn_time,
zx_time_t (C::*)(zx::handle handle));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_uint32, Apireturn_uint32,
uint32_t (C::*)(zx::handle handle));
DDKTL_INTERNAL_DECLARE_HAS_MEMBER_FN_WITH_SIGNATURE(has_api_protocol_return_uint64, Apireturn_uint64,
uint64_t (C::*)(zx::handle handle));
template <typename D>
constexpr void CheckApiProtocolSubclass() {
static_assert(internal::has_api_protocol_bool<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apibool(zx::handle handle, bool data);");
static_assert(internal::has_api_protocol_int8<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiint8(zx::handle handle, int8_t data);");
static_assert(internal::has_api_protocol_int16<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiint16(zx::handle handle, int16_t data);");
static_assert(internal::has_api_protocol_int32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiint32(zx::handle handle, int32_t data);");
static_assert(internal::has_api_protocol_int64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiint64(zx::handle handle, int64_t data);");
static_assert(internal::has_api_protocol_uint8<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiuint8(zx::handle handle, uint8_t data);");
static_assert(internal::has_api_protocol_uint16<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiuint16(zx::handle handle, uint16_t data);");
static_assert(internal::has_api_protocol_uint32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiuint32(zx::handle handle, uint32_t data);");
static_assert(internal::has_api_protocol_uint64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiuint64(zx::handle handle, uint64_t data);");
static_assert(internal::has_api_protocol_float32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apifloat32(zx::handle handle, float data);");
static_assert(internal::has_api_protocol_float64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apifloat64(zx::handle handle, double data);");
static_assert(internal::has_api_protocol_duration<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apiduration(zx::handle handle, zx_duration_t data);");
static_assert(internal::has_api_protocol_koid<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apikoid(zx::handle handle, zx_koid_t data);");
static_assert(internal::has_api_protocol_paddr<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apipaddr(zx::handle handle, zx_paddr_t data);");
static_assert(internal::has_api_protocol_signals<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apisignals(zx::handle handle, zx_signals_t data);");
static_assert(internal::has_api_protocol_time<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apitime(zx::handle handle, zx_time_t data);");
static_assert(internal::has_api_protocol_vaddr<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apivaddr(zx::handle handle, zx_vaddr_t data);");
static_assert(internal::has_api_protocol_output_bool<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_bool(zx::handle handle, bool* out_result);");
static_assert(internal::has_api_protocol_output_int8<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_int8(zx::handle handle, int8_t* out_result);");
static_assert(internal::has_api_protocol_output_int16<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_int16(zx::handle handle, int16_t* out_result);");
static_assert(internal::has_api_protocol_output_int32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_int32(zx::handle handle, int32_t* out_result);");
static_assert(internal::has_api_protocol_output_int64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_int64(zx::handle handle, int64_t* out_result);");
static_assert(internal::has_api_protocol_output_uint8<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_uint8(zx::handle handle, uint8_t* out_result);");
static_assert(internal::has_api_protocol_output_uint16<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_uint16(zx::handle handle, uint16_t* out_result);");
static_assert(internal::has_api_protocol_output_uint32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_uint32(zx::handle handle, uint32_t* out_result);");
static_assert(internal::has_api_protocol_output_uint64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_uint64(zx::handle handle, uint64_t* out_result);");
static_assert(internal::has_api_protocol_output_float32<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_float32(zx::handle handle, float* out_result);");
static_assert(internal::has_api_protocol_output_float64<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_float64(zx::handle handle, double* out_result);");
static_assert(internal::has_api_protocol_output_duration<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_duration(zx::handle handle, zx_duration_t* out_result);");
static_assert(internal::has_api_protocol_output_koid<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_koid(zx::handle handle, zx_koid_t* out_result);");
static_assert(internal::has_api_protocol_output_paddr<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_paddr(zx::handle handle, zx_paddr_t* out_result);");
static_assert(internal::has_api_protocol_output_signals<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_signals(zx::handle handle, zx_signals_t* out_result);");
static_assert(internal::has_api_protocol_output_time<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_time(zx::handle handle, zx_time_t* out_result);");
static_assert(internal::has_api_protocol_output_vaddr<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apioutput_vaddr(zx::handle handle, zx_vaddr_t* out_result);");
static_assert(internal::has_api_protocol_return_void<D>::value,
"ApiProtocol subclasses must implement "
"void Apireturn_void(zx::handle handle);");
static_assert(internal::has_api_protocol_return_status<D>::value,
"ApiProtocol subclasses must implement "
"zx_status_t Apireturn_status(zx::handle handle);");
static_assert(internal::has_api_protocol_return_ticks<D>::value,
"ApiProtocol subclasses must implement "
"zx_ticks_t Apireturn_ticks(zx::handle handle);");
static_assert(internal::has_api_protocol_return_time<D>::value,
"ApiProtocol subclasses must implement "
"zx_time_t Apireturn_time(zx::handle handle);");
static_assert(internal::has_api_protocol_return_uint32<D>::value,
"ApiProtocol subclasses must implement "
"uint32_t Apireturn_uint32(zx::handle handle);");
static_assert(internal::has_api_protocol_return_uint64<D>::value,
"ApiProtocol subclasses must implement "
"uint64_t Apireturn_uint64(zx::handle handle);");
}
} // namespace internal
} // namespace ddk