error_buffer -> errors
This commit is contained in:
parent
3774c3a9d2
commit
6678a45c7d
@ -15,7 +15,7 @@ add_executable(Graph
|
|||||||
"parser.c"
|
"parser.c"
|
||||||
"tree.c"
|
"tree.c"
|
||||||
"ps_graph.c"
|
"ps_graph.c"
|
||||||
"error_buffer.c"
|
"errors.c"
|
||||||
"math_functions.c"
|
"math_functions.c"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,10 +24,12 @@ if (MSVC)
|
|||||||
target_compile_options(Graph PRIVATE /W4)
|
target_compile_options(Graph PRIVATE /W4)
|
||||||
else()
|
else()
|
||||||
target_compile_options(Graph PRIVATE -Wall -Wextra -pedantic)
|
target_compile_options(Graph PRIVATE -Wall -Wextra -pedantic)
|
||||||
|
target_link_libraries(Graph PRIVATE m)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_compile_definitions(Graph PRIVATE ENABLE_GRAPHVIZ_EXPORT)
|
||||||
|
|
||||||
# link math
|
# link math
|
||||||
target_link_libraries(Graph PRIVATE m)
|
|
||||||
|
|
||||||
# Optionally, set the output directory for the executable
|
# Optionally, set the output directory for the executable
|
||||||
# set_target_properties(Graph PROPERTIES
|
# set_target_properties(Graph PROPERTIES
|
||||||
|
|||||||
@ -1,45 +1,45 @@
|
|||||||
#include "error_buffer.h"
|
#include "errors.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
void error_buffer_init(struct error_buffer *eb) {
|
void error_buffer_init(struct error_buffer *eb) {
|
||||||
eb->err = ERR_NO_ERR;
|
eb->err = ERR_NO_ERR;
|
||||||
eb->text_len = 0;
|
eb->text_len = 0;
|
||||||
eb->text[0] = 0;
|
eb->text[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void error_set(struct error_buffer *eb, enum error_code err) {
|
void error_set(struct error_buffer *eb, enum error_code err) {
|
||||||
eb->err = err;
|
eb->err = err;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum error_code error_get(const struct error_buffer *eb) {
|
enum error_code error_get(const struct error_buffer *eb) {
|
||||||
return eb->err;
|
return eb->err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void error_printf(struct error_buffer *eb, const char *format, ...) {
|
void error_printf(struct error_buffer *eb, const char *format, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
int space = MAX_ERROR_MESSAGE_LENGTH - eb->text_len;
|
int space = MAX_ERROR_MESSAGE_LENGTH - eb->text_len;
|
||||||
int write_size;
|
int write_size;
|
||||||
|
|
||||||
if (space == 0)
|
if (space == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
write_size = vsnprintf(eb->text + eb->text_len, MAX_ERROR_MESSAGE_LENGTH - eb->text_len, format, args);
|
write_size = vsnprintf(eb->text + eb->text_len, MAX_ERROR_MESSAGE_LENGTH - eb->text_len, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
if (write_size < 0)
|
if (write_size < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (write_size < space) {
|
if (write_size < space) {
|
||||||
eb->text_len += write_size;
|
eb->text_len += write_size;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
eb->text_len = MAX_ERROR_MESSAGE_LENGTH;
|
eb->text_len = MAX_ERROR_MESSAGE_LENGTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *error_get_text(const struct error_buffer *eb) {
|
const char *error_get_text(const struct error_buffer *eb) {
|
||||||
return eb->text;
|
return eb->text;
|
||||||
}
|
}
|
||||||
@ -1,67 +1,67 @@
|
|||||||
#ifndef ERROR_CODE_H
|
#ifndef ERRORS_H
|
||||||
#define ERROR_CODE_H
|
#define ERRORS_H
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define MAX_ERROR_MESSAGE_LENGTH 512
|
#define MAX_ERROR_MESSAGE_LENGTH 512
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Chybové kódy
|
* @brief Chybové kódy
|
||||||
*/
|
*/
|
||||||
enum error_code {
|
enum error_code {
|
||||||
ERR_NO_ERR = 0, /* Žádná chyba */
|
ERR_NO_ERR = 0, /* Žádná chyba */
|
||||||
ERR_INVALID_ARGS = 1, /* Neplatné argumenty programu */
|
ERR_INVALID_ARGS = 1, /* Neplatné argumenty programu */
|
||||||
ERR_INVALID_FUNCTION = 2, /* Zadaná matematická funkce je neplatná */
|
ERR_INVALID_FUNCTION = 2, /* Zadaná matematická funkce je neplatná */
|
||||||
ERR_INVALID_FILENAME = 3, /* Zadaný název souboru není platný */
|
ERR_INVALID_FILENAME = 3, /* Zadaný název souboru není platný */
|
||||||
ERR_INVALID_LIMITS = 4, /* Zadané hranice jsou ve špatném formátu */
|
ERR_INVALID_LIMITS = 4, /* Zadané hranice jsou ve špatném formátu */
|
||||||
ERR_BAD_ALLOC = 5 /* Při alokaci paměti nastala chyba */
|
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
|
* @brief Zásobník pro chybový kód a řetězec popisující chybu
|
||||||
*/
|
*/
|
||||||
struct error_buffer {
|
struct error_buffer {
|
||||||
enum error_code err;
|
enum error_code err;
|
||||||
char text[MAX_ERROR_MESSAGE_LENGTH];
|
char text[MAX_ERROR_MESSAGE_LENGTH];
|
||||||
size_t text_len;
|
size_t text_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Inicializuje zásobník
|
* @brief Inicializuje zásobník
|
||||||
*
|
*
|
||||||
* @param eb Zásobník
|
* @param eb Zásobník
|
||||||
*/
|
*/
|
||||||
void error_buffer_init(struct error_buffer *eb);
|
void error_buffer_init(struct error_buffer *eb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Nastaví chybový kód
|
* @brief Nastaví chybový kód
|
||||||
*
|
*
|
||||||
* @param eb Zásobník
|
* @param eb Zásobník
|
||||||
* @param err Chybový kód
|
* @param err Chybový kód
|
||||||
*/
|
*/
|
||||||
void error_set(struct error_buffer *eb, enum error_code err);
|
void error_set(struct error_buffer *eb, enum error_code err);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Přidá do zásobníku formátovaný řetězec
|
* @brief Přidá do zásobníku formátovaný řetězec
|
||||||
*
|
*
|
||||||
* @param eb Zásobník
|
* @param eb Zásobník
|
||||||
*/
|
*/
|
||||||
void error_printf(struct error_buffer *eb, const char *format, ...);
|
void error_printf(struct error_buffer *eb, const char *format, ...);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vrátí chybový kód
|
* Vrátí chybový kód
|
||||||
*
|
*
|
||||||
* @param eb Zásobník
|
* @param eb Zásobník
|
||||||
* @return Chybový kód
|
* @return Chybový kód
|
||||||
*/
|
*/
|
||||||
enum error_code error_get(const struct error_buffer *eb);
|
enum error_code error_get(const struct error_buffer *eb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vrátí řetězec popisující chybu
|
* Vrátí řetězec popisující chybu
|
||||||
*
|
*
|
||||||
* @param eb Zásobník
|
* @param eb Zásobník
|
||||||
* @return Řetězec popisující chybu
|
* @return Řetězec popisující chybu
|
||||||
*/
|
*/
|
||||||
const char *error_get_text(const struct error_buffer *eb);
|
const char *error_get_text(const struct error_buffer *eb);
|
||||||
|
|
||||||
#endif /* ERROR_CODE_H */
|
#endif /* ERRORS_H */
|
||||||
4
lex.h
4
lex.h
@ -1,7 +1,7 @@
|
|||||||
#ifndef LEX_H
|
#ifndef LEX_H
|
||||||
#define LEX_H
|
#define LEX_H
|
||||||
|
|
||||||
#include "error_buffer.h"
|
#include "errors.h"
|
||||||
|
|
||||||
#define LEX_DEBUG
|
#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);
|
const char *lex_token_str(enum token_type token);
|
||||||
|
|
||||||
#endif /* LEX_H */
|
#endif /* LEX_H */
|
||||||
|
|||||||
2
main.c
2
main.c
@ -3,7 +3,7 @@
|
|||||||
#include "lex.h"
|
#include "lex.h"
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
#include "ps_graph.h"
|
#include "ps_graph.h"
|
||||||
#include "error_buffer.h"
|
#include "errors.h"
|
||||||
|
|
||||||
static void print_usage(FILE *f, const char *name) {
|
static void print_usage(FILE *f, const char *name) {
|
||||||
fprintf(f, "Usage: %s <function> <output file> [<range>]\n", name);
|
fprintf(f, "Usage: %s <function> <output file> [<range>]\n", name);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user