co_usb
Loading...
Searching...
No Matches
transfer_sequence.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <libusb.h>
9#include <ranges>
10#include <type_traits>
11
13{
14
26template <typename Ty>
28 std::same_as<std::remove_cvref_t<Ty>, libusb_transfer *> || requires(Ty ty) {
29 { ty.get() } -> std::same_as<libusb_transfer *>;
30 };
31
40template <TransferResource Ty>
41constexpr inline auto transfer_of (Ty const &tfer_res) -> libusb_transfer *
42{
43 if constexpr (std::same_as<std::remove_cvref_t<Ty>, libusb_transfer *>)
44 {
45 return tfer_res;
46 }
47 else
48 {
49 return tfer_res.get();
50 }
51};
52
66template <typename Ty>
69 (std::ranges::bidirectional_range<Ty> && TransferResource<std::ranges::range_value_t<Ty>>);
70
71} // namespace co_usb::transfer::detail
A type which can provide a libusb_transfer *.
Definition transfer_sequence.hpp:27
A sequence of co_usb::transfer::detail::TransferResource.
Definition transfer_sequence.hpp:67
constexpr auto transfer_of(Ty const &tfer_res) -> libusb_transfer *
Uniform accessor for obtaining a libusb_transfer * from a co_usb::transfer::detail::TransferResource.
Definition transfer_sequence.hpp:41
Definition complete_io.hpp:21