Added Logger
This commit is contained in:
parent
8797c6d948
commit
18a66011ef
|
@ -0,0 +1,47 @@
|
|||
|
||||
#ifndef CARROT_LOGGING_H
|
||||
#define CARROT_LOGGING_H
|
||||
|
||||
#include <utility.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CARROT_PARSER_ERROR_SEVERITY_NOTE,
|
||||
CARROT_PARSER_ERROR_SEVERITY_WARNING,
|
||||
CARROT_PARSER_ERROR_SEVERITY_ERROR,
|
||||
CARROT_PARSER_ERROR_SEVERITY_UNRECOVERABLE_ERROR
|
||||
|
||||
} carrot_error_severity_e;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CARROT_PARSER_LOG_ITEM,
|
||||
CARROT_SYNTAX_LOG_ITEM
|
||||
|
||||
} carrot_log_item_type_e;
|
||||
|
||||
typedef struct carrot_log carrot_log_s;
|
||||
typedef struct carrot_log_item carrot_log_item_s;
|
||||
typedef struct carrot_log_message carrot_log_message_s;
|
||||
|
||||
struct carrot_log_message
|
||||
{
|
||||
carrot_error_severity_e severity;
|
||||
cstr_s text;
|
||||
};
|
||||
|
||||
struct carrot_log
|
||||
{
|
||||
u32_t capacity;
|
||||
u32_t length;
|
||||
carrot_log_message_s *items;
|
||||
};
|
||||
|
||||
carrot_log_s carrot_create_log ();
|
||||
|
||||
void carrot_issue_note (carrot_log_s *log, char *message);
|
||||
void carrot_issue_warning (carrot_log_s *log, char *message);
|
||||
void carrot_issue_error (carrot_log_s *log, char *message);
|
||||
void carrot_issue_unrecoverable_error (carrot_log_s *log, char *message);
|
||||
|
||||
#endif // CARROT_LOGGING_H
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
#ifndef CARROT_UTILITY_H
|
||||
#define CARROT_UTILITY_H
|
||||
|
||||
#define FALSE ((bool_t) 0)
|
||||
#define TRUE ((bool_t) 1)
|
||||
|
||||
#define NULL ((void *) 0)
|
||||
|
||||
|
||||
typedef signed char s8_t;
|
||||
typedef signed short s16_t;
|
||||
typedef signed int s32_t;
|
||||
typedef signed long s64_t;
|
||||
|
||||
typedef unsigned char u8_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef unsigned int u32_t;
|
||||
typedef unsigned long u64_t;
|
||||
|
||||
typedef u8_t bool_t;
|
||||
typedef struct str_s
|
||||
{
|
||||
u32_t len_text;
|
||||
char *text;
|
||||
} cstr_s;
|
||||
|
||||
// Not implemented
|
||||
cstr_s cstr_join (cstr_s string1, cstr_s string2);
|
||||
|
||||
// Not implemented
|
||||
bool_t cstr_split (cstr_s string, u32_t middle, cstr_s *first, cstr_s *second);
|
||||
|
||||
cstr_s carrot_wrap_chars (char *chars)
|
||||
|
||||
#endif
|
|
@ -0,0 +1,37 @@
|
|||
#include <logging.h>
|
||||
|
||||
|
||||
carrot_log_s carrot_create_log()
|
||||
{
|
||||
carrot_log_s logger;
|
||||
logger.capacity = 8192;
|
||||
logger.length = 0;
|
||||
logger.items = calloc(sizeof(carrot_log_message_s), logger.capacity);
|
||||
return logger;
|
||||
}
|
||||
|
||||
|
||||
void carrot_issue_note(carrot_log_s *log, char *message)
|
||||
{
|
||||
log->items[log->length].text = carrot_wrap_chars(message);
|
||||
log->items[log->length].severity = CARROT_PARSER_ERROR_SEVERITY_NOTE;
|
||||
}
|
||||
|
||||
void carrot_issue_warning(carrot_log_s *log, char *message)
|
||||
{
|
||||
log->items[log->length].text = carrot_wrap_chars(message);
|
||||
log->items[log->length].severity = CARROT_PARSER_ERROR_SEVERITY_WARNING;
|
||||
}
|
||||
|
||||
void carrot_issue_error(carrot_log_s *log, char *message)
|
||||
{
|
||||
log->items[log->length].text = carrot_wrap_chars(message);
|
||||
log->items[log->length].severity = CARROT_PARSER_ERROR_SEVERITY_ERROR;
|
||||
}
|
||||
|
||||
void carrot_issue_unrecoverable_error(carrot_log_s *log, char *message)
|
||||
{
|
||||
log->items[log->length].text = carrot_wrap_chars(message);
|
||||
log->items[log->length].severity = CARROT_PARSER_ERROR_SEVERITY_UNRECOVERABLE_ERROR;
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#include <utility.h>
|
||||
|
||||
cstr_s carrot_wrap_chars(char *chars)
|
||||
{
|
||||
cstr_s result;
|
||||
result.len_text = strlen(chars);
|
||||
result.text = malloc(result.len_text);
|
||||
memcpy(result.text, chars, result.len_text);
|
||||
|
||||
return result;
|
||||
}
|
Loading…
Reference in New Issue