new table format, templating mt_printf
This commit is contained in:
@@ -6,10 +6,10 @@
|
||||
#include "core_unicode.h"
|
||||
#include "core_arena.h"
|
||||
#include "core_string.h"
|
||||
#include "core_lexer.h"
|
||||
#include "core_math.h"
|
||||
#include "core_log.h"
|
||||
#include "core_type_info.h"
|
||||
#include "core_lexer.h"
|
||||
#include "core_log.h"
|
||||
#include "core_intrin.h"
|
||||
#include "core_platform.h"
|
||||
#include "core_hash_table.h"
|
||||
|
||||
@@ -159,3 +159,18 @@ fn void parser_panicf(lex_t *token, const char *str, ...);
|
||||
fn void parser_eat_until(parser_t *par, lex_kind_t kind);
|
||||
fn void parser_eat_including(parser_t *par, lex_kind_t kind);
|
||||
|
||||
gb_read_only lex_t lex_null;
|
||||
|
||||
gb_read_only type_member_t members__lex_kind_t[] = {
|
||||
#define X(KIND, STR, SIMPLE) {.name = s8_const_lit("lex_kind_" #KIND), .value = KIND},
|
||||
LEX_KIND_XLIST
|
||||
#undef X
|
||||
};
|
||||
DEFINE_ENUM(lex_kind_t);
|
||||
|
||||
gb_read_only type_member_t members__lex_suffix_t[] = {
|
||||
#define X(KIND) {.name = s8_const_lit(#KIND), .value = KIND},
|
||||
LEX_SUFFIX_XLIST
|
||||
#undef X
|
||||
};
|
||||
DEFINE_ENUM(lex_suffix_t);
|
||||
|
||||
@@ -1,22 +1,4 @@
|
||||
/*
|
||||
** design:
|
||||
** two modes of working:
|
||||
** optional immediate dump to console
|
||||
** optional store and retrieval data structure
|
||||
**
|
||||
** [ ] console
|
||||
** [ ] silence very particular messages (use case: user tries to tokenize c code,
|
||||
** cares only about particular decls,
|
||||
** does not want to see error flood)
|
||||
** [ ] graphical integrated into application
|
||||
** [ ] little counter of unread warnings/errors, somewhere in the corner, that you can click on
|
||||
** [ ] hierarchy which you can traverse, dive into things which interest you
|
||||
** [ ] support for very arbitrary logs: "log_triangle", which would show debug points on screen
|
||||
**
|
||||
**
|
||||
**
|
||||
*/
|
||||
typedef enum { // AFTER_CHANGING: modify type_info and log_level_str
|
||||
typedef enum {
|
||||
log_level_debug,
|
||||
log_level_info,
|
||||
log_level_warning,
|
||||
|
||||
@@ -33,6 +33,7 @@ struct sb8_t {
|
||||
|
||||
// WARNING: remember to update typeinfo after editing this
|
||||
i32 indent;
|
||||
void *user_data;
|
||||
};
|
||||
|
||||
typedef i32 s8_seek_t;
|
||||
|
||||
@@ -20,6 +20,7 @@ enum {
|
||||
type_kind_usize,
|
||||
type_kind_int,
|
||||
type_kind_char,
|
||||
type_kind_void,
|
||||
|
||||
type_kind_pointer,
|
||||
type_kind_array,
|
||||
@@ -28,7 +29,7 @@ enum {
|
||||
type_kind_enum,
|
||||
|
||||
type_kind_first_basic = type_kind_i8,
|
||||
type_kind_last_basic = type_kind_char,
|
||||
type_kind_last_basic = type_kind_void,
|
||||
};
|
||||
|
||||
typedef struct type_t type_t;
|
||||
@@ -101,6 +102,7 @@ gb_read_only type_t type__isize = {type_kind_isize, s8_const_lit("isize"), sizeo
|
||||
gb_read_only type_t type__usize = {type_kind_usize, s8_const_lit("usize"), sizeof(usize)};
|
||||
gb_read_only type_t type__int = {type_kind_int, s8_const_lit("int"), sizeof(int)};
|
||||
gb_read_only type_t type__char = {type_kind_char, s8_const_lit("char"), sizeof(char)};
|
||||
gb_read_only type_t type__void = {type_kind_void, s8_const_lit("void")};
|
||||
|
||||
gb_read_only type_t type__s8_t = { type_kind_struct, s8_const_lit("s8_t"), sizeof(s8_t), .count = 2,
|
||||
.members = (type_member_t[]){
|
||||
@@ -146,7 +148,8 @@ gb_read_only type_t type__sb8_t = { type_kind_struct, s8_const_lit("sb8_t"), siz
|
||||
{s8_const_lit("arena"), &POINTER(ma_arena_t), .offset = offsetof(sb8_t, arena)},
|
||||
{s8_const_lit("first"), &POINTER(sb8_node_t), .offset = offsetof(sb8_t, first)},
|
||||
{s8_const_lit("last"), &POINTER(sb8_node_t), .offset = offsetof(sb8_t, last)},
|
||||
{s8_const_lit("indent"), &type__i32, .offset = offsetof(sb8_t, first)},
|
||||
{s8_const_lit("indent"), &type__i32, .offset = offsetof(sb8_t, indent)},
|
||||
{s8_const_lit("user_data"), &POINTER(void), .offset = offsetof(sb8_t, user_data)},
|
||||
}
|
||||
};
|
||||
|
||||
@@ -353,26 +356,3 @@ gb_read_only type_member_t members__r1i64_t[] = {
|
||||
{s8_const_lit("x1"), &type__i64, .offset = offsetof(r1i64_t, x1)},
|
||||
};
|
||||
gb_read_only DEFINE_STRUCT(r1i64_t);
|
||||
|
||||
gb_read_only type_member_t members__lex_kind_t[] = {
|
||||
#define X(KIND, STR, SIMPLE) {.name = s8_const_lit("lex_kind_" #KIND), .value = KIND},
|
||||
LEX_KIND_XLIST
|
||||
#undef X
|
||||
};
|
||||
DEFINE_ENUM(lex_kind_t);
|
||||
|
||||
gb_read_only type_member_t members__lex_suffix_t[] = {
|
||||
#define X(KIND) {.name = s8_const_lit(#KIND), .value = KIND},
|
||||
LEX_SUFFIX_XLIST
|
||||
#undef X
|
||||
};
|
||||
DEFINE_ENUM(lex_suffix_t);
|
||||
|
||||
gb_read_only type_member_t members__log_level_t[] = {
|
||||
{.name = s8_const_lit("log_level_debug"), .value = log_level_debug},
|
||||
{.name = s8_const_lit("log_level_info"), .value = log_level_info},
|
||||
{.name = s8_const_lit("log_level_warning"), .value = log_level_warning},
|
||||
{.name = s8_const_lit("log_level_error"), .value = log_level_error},
|
||||
{.name = s8_const_lit("log_level_fatal"), .value = log_level_fatal},
|
||||
};
|
||||
DEFINE_ENUM(log_level_t);
|
||||
Reference in New Issue
Block a user