error_buffer -> errors
This commit is contained in:
parent
3774c3a9d2
commit
6678a45c7d
@ -15,7 +15,7 @@ add_executable(Graph
|
||||
"parser.c"
|
||||
"tree.c"
|
||||
"ps_graph.c"
|
||||
"error_buffer.c"
|
||||
"errors.c"
|
||||
"math_functions.c"
|
||||
)
|
||||
|
||||
@ -24,10 +24,12 @@ if (MSVC)
|
||||
target_compile_options(Graph PRIVATE /W4)
|
||||
else()
|
||||
target_compile_options(Graph PRIVATE -Wall -Wextra -pedantic)
|
||||
target_link_libraries(Graph PRIVATE m)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(Graph PRIVATE ENABLE_GRAPHVIZ_EXPORT)
|
||||
|
||||
# link math
|
||||
target_link_libraries(Graph PRIVATE m)
|
||||
|
||||
# Optionally, set the output directory for the executable
|
||||
# set_target_properties(Graph PROPERTIES
|
||||
|
||||
@ -1,45 +1,45 @@
|
||||
#include "error_buffer.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
void error_buffer_init(struct error_buffer *eb) {
|
||||
eb->err = ERR_NO_ERR;
|
||||
eb->text_len = 0;
|
||||
eb->text[0] = 0;
|
||||
}
|
||||
|
||||
void error_set(struct error_buffer *eb, enum error_code err) {
|
||||
eb->err = err;
|
||||
}
|
||||
|
||||
enum error_code error_get(const struct error_buffer *eb) {
|
||||
return eb->err;
|
||||
}
|
||||
|
||||
void error_printf(struct error_buffer *eb, const char *format, ...) {
|
||||
va_list args;
|
||||
int space = MAX_ERROR_MESSAGE_LENGTH - eb->text_len;
|
||||
int write_size;
|
||||
|
||||
if (space == 0)
|
||||
return;
|
||||
|
||||
va_start(args, format);
|
||||
write_size = vsnprintf(eb->text + eb->text_len, MAX_ERROR_MESSAGE_LENGTH - eb->text_len, format, args);
|
||||
va_end(args);
|
||||
|
||||
if (write_size < 0)
|
||||
return;
|
||||
|
||||
if (write_size < space) {
|
||||
eb->text_len += write_size;
|
||||
}
|
||||
else {
|
||||
eb->text_len = MAX_ERROR_MESSAGE_LENGTH;
|
||||
}
|
||||
}
|
||||
|
||||
const char *error_get_text(const struct error_buffer *eb) {
|
||||
return eb->text;
|
||||
#include "errors.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
void error_buffer_init(struct error_buffer *eb) {
|
||||
eb->err = ERR_NO_ERR;
|
||||
eb->text_len = 0;
|
||||
eb->text[0] = 0;
|
||||
}
|
||||
|
||||
void error_set(struct error_buffer *eb, enum error_code err) {
|
||||
eb->err = err;
|
||||
}
|
||||
|
||||
enum error_code error_get(const struct error_buffer *eb) {
|
||||
return eb->err;
|
||||
}
|
||||
|
||||
void error_printf(struct error_buffer *eb, const char *format, ...) {
|
||||
va_list args;
|
||||
int space = MAX_ERROR_MESSAGE_LENGTH - eb->text_len;
|
||||
int write_size;
|
||||
|
||||
if (space == 0)
|
||||
return;
|
||||
|
||||
va_start(args, format);
|
||||
write_size = vsnprintf(eb->text + eb->text_len, MAX_ERROR_MESSAGE_LENGTH - eb->text_len, format, args);
|
||||
va_end(args);
|
||||
|
||||
if (write_size < 0)
|
||||
return;
|
||||
|
||||
if (write_size < space) {
|
||||
eb->text_len += write_size;
|
||||
}
|
||||
else {
|
||||
eb->text_len = MAX_ERROR_MESSAGE_LENGTH;
|
||||
}
|
||||
}
|
||||
|
||||
const char *error_get_text(const struct error_buffer *eb) {
|
||||
return eb->text;
|
||||
}
|
||||
@ -1,67 +1,67 @@
|
||||
#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 */
|
||||
#ifndef ERRORS_H
|
||||
#define ERRORS_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 /* ERRORS_H */
|
||||
4
lex.h
4
lex.h
@ -1,7 +1,7 @@
|
||||
#ifndef LEX_H
|
||||
#define LEX_H
|
||||
|
||||
#include "error_buffer.h"
|
||||
#include "errors.h"
|
||||
|
||||
#define LEX_DEBUG
|
||||
|
||||
@ -114,4 +114,4 @@ const char *lex_get_error_text(const struct lexer *lex);
|
||||
*/
|
||||
const char *lex_token_str(enum token_type token);
|
||||
|
||||
#endif /* LEX_H */
|
||||
#endif /* LEX_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user