67 lines
1.6 KiB
C
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 */ |