PC_graph/error_buffer.h
2024-12-18 15:52:01 +01:00

67 lines
1.6 KiB
C

#ifndef ERROR_CODE_H
#define ERROR_CODE_H
#include <stdlib.h>
#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 */