co_usb
Loading...
Searching...
No Matches
error.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <libusb-1.0/libusb.h>
4#include <system_error>
5#include <type_traits>
6namespace co_usb
7{
8
37
38struct transfer_status_category_t : public std::error_category
39{
40 const char *name () const noexcept override
41 {
42 return "co_usb transfer status";
43 }
44
45 std::string message (int v) const override
46 {
47 switch (static_cast<transfer_status>(v))
48 {
50 case completed: return "completed";
51 case error: return "error";
52 case cancelled: return "cancelled";
53 case stall: return "device stalled";
54 case no_device: return "no such device";
55 case overflow: return "data overflow";
56 default: return "unknown";
57 }
58 }
59};
60
61inline const std::error_category &transfer_status_category ()
62{
64 return instance;
65}
66
67inline std::error_code make_transfer_status (transfer_status e) noexcept
68{
69 return {static_cast<int>(e), transfer_status_category()};
70}
71
72inline std::error_code make_transfer_status (libusb_transfer_status e) noexcept
73{
74 return {static_cast<int>(e), transfer_status_category()};
75}
76
77} // namespace co_usb
78
79namespace std
80{
81
82template <> struct is_error_code_enum<co_usb::transfer_status> : ::std::true_type
83{
84};
85
86} // namespace std
Definition context.hpp:14
transfer_status
Status codes for transfers.
Definition error.hpp:15
const std::error_category & transfer_status_category()
Definition error.hpp:61
std::error_code make_transfer_status(transfer_status e) noexcept
Definition error.hpp:67
use_service
Definition context.hpp:17
Definition error.hpp:88
Definition error.hpp:39
const char * name() const noexcept override
Definition error.hpp:40
std::string message(int v) const override
Definition error.hpp:45