When you open IOKit/usb/USB.h
, you see constants like:
#define err_system(x) (signed((unsigned(x) & 0x3f) << 26))
#define err_sub(x) ((x & 0xfff) << 14)
#define sys_iokit err_system(0x38)
#define sub_iokit_usb err_sub(1)
#define iokit_usb_err(return) (IOReturn)(sys_iokit|sub_iokit_usb|return)
//Then all errors are defined like:
#define kIOUSBUnknownPipeErr iokit_usb_err(0x61) //0xe0004061
kIOUSBTooManyPipesErr iokit_usb_err(0x60) //0xe0004060
.
.
So I decided to try this in swift:
private enum IOUSBError: IOReturn {
case unknownPipeErr = 0xe0004061
case tooManyPipesErr = 0xe0004060
.
.
}
But it gives the error: "Integer literal '3758112865' overflows when stored into 'IOReturn' (aka 'Int32')"
For every single enum case..
Any idea how to deliberately allow this?