|
| struct | sbl::validation::has_gpio_set_mode< T, typename > |
| | GPIO Driver Method Detection (Handle-First API) More...
|
| |
| struct | sbl::validation::has_gpio_set_mode< T, std::void_t< decltype(T::set_mode(std::declval< const sbl::GpioHandle & >(), std::declval< sbl::core::hal::gpio::PinMode >()))> > |
| |
| struct | sbl::validation::has_gpio_write< T, typename > |
| |
| struct | sbl::validation::has_gpio_write< T, std::void_t< decltype(T::write(std::declval< const sbl::GpioHandle & >(), std::declval< bool >()))> > |
| |
| struct | sbl::validation::has_gpio_read< T, typename > |
| |
| struct | sbl::validation::has_gpio_read< T, std::void_t< decltype(T::read(std::declval< const sbl::GpioHandle & >()))> > |
| |
| struct | sbl::validation::has_gpio_toggle< T, typename > |
| |
| struct | sbl::validation::has_gpio_toggle< T, std::void_t< decltype(T::toggle(std::declval< const sbl::GpioHandle & >()))> > |
| |
| struct | sbl::validation::gpio_driver_interface_complete< GpioDriver > |
| | Combined GPIO driver interface check. More...
|
| |
| struct | sbl::validation::has_timer_delay_ms< T, typename > |
| | Timer Driver Method Detection. More...
|
| |
| struct | sbl::validation::has_timer_delay_ms< T, std::void_t< decltype(T::delay_ms(std::declval< uint32_t >()))> > |
| |
| struct | sbl::validation::has_timer_millis< T, typename > |
| |
| struct | sbl::validation::has_timer_millis< T, std::void_t< decltype(T::millis())> > |
| |
| struct | sbl::validation::has_uart_init< T, typename > |
| | UART Driver Method Detection. More...
|
| |
| struct | sbl::validation::has_uart_init< T, std::void_t< decltype(T::init(std::declval< const sbl::UartHandle & >()))> > |
| |
| struct | sbl::validation::has_uart_write_byte< T, typename > |
| |
| struct | sbl::validation::has_uart_write_byte< T, std::void_t< decltype(T::write_byte(std::declval< uint8_t >()))> > |
| |
| struct | sbl::validation::has_uart_write< T, typename > |
| |
| struct | sbl::validation::has_uart_write< T, std::void_t< decltype(T::write(std::declval< const uint8_t * >(), std::declval< std::size_t >()))> > |
| |
| struct | sbl::validation::has_adc_init< T, typename > |
| | ADC Driver Method Detection. More...
|
| |
| struct | sbl::validation::has_adc_init< T, std::void_t< decltype(T::init())> > |
| |
| struct | sbl::validation::has_adc_configure_channel< T, typename > |
| |
| struct | sbl::validation::has_adc_configure_channel< T, std::void_t< decltype(T::configure_channel(std::declval< const sbl::AdcHandle & >(), std::declval< sbl::core::hal::adc::SampleTime >()))> > |
| |
| struct | sbl::validation::has_adc_start_conversion< T, typename > |
| |
| struct | sbl::validation::has_adc_start_conversion< T, std::void_t< decltype(T::start_conversion(std::declval< const sbl::AdcHandle & >()))> > |
| |
| struct | sbl::validation::has_adc_is_conversion_complete< T, typename > |
| |
| struct | sbl::validation::has_adc_is_conversion_complete< T, std::void_t< decltype(T::is_conversion_complete())> > |
| |
| struct | sbl::validation::has_adc_read_raw< T, typename > |
| |
| struct | sbl::validation::has_adc_read_raw< T, std::void_t< decltype(T::read_raw())> > |
| |
| struct | sbl::validation::has_adc_resolution_bits< T, typename > |
| |
| struct | sbl::validation::has_adc_resolution_bits< T, std::void_t< decltype(T::resolution_bits())> > |
| |
| struct | sbl::validation::adc_driver_interface_complete< AdcDriver > |
| | Combined ADC driver interface check. More...
|
| |
Method and interface detection for driver validation.
Uses C++17 SFINAE (Substitution Failure Is Not An Error) to detect what methods drivers provide at compile-time. This enables comprehensive driver contract validation with clear error messages.
SFINAE Pattern
All detection uses the consistent std::void_t pattern:
template<typename T, typename = void>
struct has_method : std::false_type {};
template<typename T>
struct has_method<T, std::void_t<decltype(T::method(...))>>
: std::true_type {};
- See also
- gpio_requirements.hpp
Definition in file method_detection.hpp.