git » swiftpm » main » tree

[main] / Sources / c_snikket / iinclude / hx / ErrorCodes.h

#ifndef HX_ERROR_CODES
#define HX_ERROR_CODES

// --- Exteral constants, used inline
#define HX_INVALID_CAST          Dynamic(HX_CSTRING("Invalid Cast"))
#define HX_INVALID_INTERFACE     Dynamic(HX_CSTRING("Object does not implement interface"))
#define HX_INDEX_OUT_OF_BOUNDS   Dynamic(HX_CSTRING("Index Out of Bounds"))
#define HX_INVALID_CONSTRUCTOR   Dynamic(HX_CSTRING("Invalid constructor"))
#define HX_INVALID_ENUM_CONSTRUCTOR(_enum_name, _constructor_name)      \
    Dynamic(HX_CSTRING("Invalid enum constructor for ") +               \
            HX_CSTRING(_enum_name) +                                    \
            HX_CSTRING(": ") +                                          \
            _constructor_name)
#define HX_INVALID_OBJECT        Dynamic(HX_CSTRING("Invalid object"))
#define HX_INVALID_ARG_COUNT     Dynamic(HX_CSTRING("Invalid Arg Count"))
#define HX_NULL_FUNCTION_POINTER Dynamic(HX_CSTRING("Null Function Pointer"))
#define HX_INVALID_ENUM_ARG_COUNT(_enum_name, _constructor_name, _count, _expected) \
    Dynamic(HX_CSTRING("Invalid enum arg count for ") +                 \
            HX_CSTRING(_enum_name) +                                    \
            HX_CSTRING(".") +                                           \
            _constructor_name +                                         \
            HX_CSTRING(": expected ") +                                 \
            ::String(_expected) +                                       \
            HX_CSTRING(", got ") +                                      \
            ::String(_count))

#endif