/* * FnixLib - manejo de errores. * * Convención general de la API: * - Las funciones que crean un objeto devuelven un puntero; NULL indica fallo. * - Las funciones de consulta no fallan: con un puntero NULL o un argumento * fuera de rango devuelven 0 / false. * - Cuando algo falla, FnixLib guarda un código y un mensaje legibles * (por hilo), que se consultan con fnix_last_error_code() y * fnix_last_error(). Un éxito NO borra el último error (como errno). */ #ifndef FNIX_ERRORS_H #define FNIX_ERRORS_H #include "fnix/types.h" FNIX_BEGIN_DECLS typedef enum FnixError { FNIX_OK = 0, FNIX_ERROR_INVALID_ARGUMENT, /* argumento nulo o fuera de rango */ FNIX_ERROR_OUT_OF_MEMORY, /* no se pudo reservar memoria */ FNIX_ERROR_PLATFORM, /* fallo del sistema (pantalla, ventana) */ FNIX_ERROR_UNSUPPORTED /* el sistema no ofrece lo que se necesita */ } FnixError; /* Descripción corta y fija de un código. Nunca devuelve NULL. */ const char *fnix_error_string(FnixError error); /* Código del último error ocurrido en este hilo (FNIX_OK si no hubo ninguno). */ FnixError fnix_last_error_code(void); /* Mensaje detallado del último error. Nunca devuelve NULL; es "" si no hubo * errores. El puntero es válido hasta el siguiente error en este hilo. */ const char *fnix_last_error(void); /* Olvida el último error de este hilo. */ void fnix_clear_error(void); FNIX_END_DECLS #endif /* FNIX_ERRORS_H */