#ifndef ERROR_CODE_H #define ERROR_CODE_H #include #define MAX_ERROR_MESSAGE_LENGTH 512 /** * @brief Chybové kódy */ enum error_code { ERR_NO_ERR = 0, ///< Žádná chyba ERR_INVALID_ARGS = 1, ///< Neplatné argumenty programu ERR_INVALID_FUNCTION = 2, ///< Zadaná matematická funkce je neplatná ERR_INVALID_FILENAME = 3, ///< Zadaný název souboru není platný ERR_INVALID_LIMITS = 4, ///< Zadané hranice jsou ve špatném formátu ERR_BAD_ALLOC = 5 ///< Při alokaci paměti nastala chyba }; /** * @brief Zásobník pro chybový kód a řetězec popisující chybu */ struct error_buffer { enum error_code err; char text[MAX_ERROR_MESSAGE_LENGTH]; size_t text_len; }; /** * @brief Inicializuje zásobník * * @param eb Zásobník */ void error_buffer_init(struct error_buffer *eb); /** * @brief Nastaví chybový kód * * @param eb Zásobník * @param err Chybový kód */ void error_set(struct error_buffer *eb, enum error_code err); /** * @brief Přidá do zásobníku formátovaný řetězec * * @param eb Zásobník */ void error_printf(struct error_buffer *eb, const char *format, ...); /** * Vrátí chybový kód * * @param eb Zásobník * @return Chybový kód */ enum error_code error_get(const struct error_buffer *eb); /** * Vrátí řetězec popisující chybu * * @param eb Zásobník * @return Řetězec popisující chybu */ const char *error_get_text(const struct error_buffer *eb); #endif /* ERROR_CODE_H */