#ifndef _ERRORS_H
#define _ERRORS_H

#ifdef _WIN32
#undef ERROR_CANCELLED
#endif

#include <string>

#define ERROR_ARGS (-1)
#define ERROR_FORMAT (-2)
#define ERROR_INCOMPATIBLE (-3)
#define ERROR_READ_FAILED (-4)
#define ERROR_WRITE_FAILED (-5)
#define ERROR_USB (-6)
#define ERROR_NO_DEVICE (-7)
#define ERROR_NOT_POSSIBLE (-8)
#define ERROR_CONNECTION (-9)
#define ERROR_CANCELLED (-10)
#define ERROR_VERIFICATION_FAILED (-11)
#define ERROR_UNKNOWN (-99)


struct failure_error : std::exception {
    failure_error(int code, std::string s) : c(code), s(std::move(s)) {}

    const char *what() const noexcept override {
        return s.c_str();
    }

    int code() const { return c; }
private:
    int c;
    std::string s;
};


void fail(int code, std::string msg);
void fail(int code, const char *format, ...);

#endif