mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 02:31:28 +00:00
Cleanups and add the corrector to the makefile. Starting integration with the parser.
This commit is contained in:
parent
7ef051f58a
commit
d97e032fcf
4 changed files with 16 additions and 55 deletions
2
Makefile
2
Makefile
|
@ -37,7 +37,7 @@ ifeq ($(track), no)
|
|||
CFLAGS += -DNOTRACK
|
||||
endif
|
||||
|
||||
OBJ_D = util.o code.o ast.o ir.o conout.o ftepp.o opts.o file.o utf8.o
|
||||
OBJ_D = util.o code.o ast.o ir.o conout.o ftepp.o opts.o file.o utf8.o correct.o
|
||||
OBJ_T = test.o util.o conout.o file.o
|
||||
OBJ_C = main.o lexer.o parser.o file.o
|
||||
OBJ_X = exec-standalone.o util.o conout.o file.o
|
||||
|
|
36
correct.c
36
correct.c
|
@ -342,7 +342,7 @@ void correct_add(ht table, size_t ***size, const char *ident) {
|
|||
}
|
||||
}
|
||||
|
||||
char *correct_correct(ht table, const char *ident) {
|
||||
char *correct_str(ht table, const char *ident) {
|
||||
char **e1;
|
||||
char **e2;
|
||||
char *e1ident;
|
||||
|
@ -385,37 +385,3 @@ void correct_del(ht dictonary, size_t **data) {
|
|||
vec_free(data);
|
||||
util_htdel(dictonary);
|
||||
}
|
||||
|
||||
int main() {
|
||||
opts.debug = true;
|
||||
opts.memchk = true;
|
||||
con_init();
|
||||
|
||||
ht t = util_htnew(1024);
|
||||
size_t **d = NULL;
|
||||
|
||||
correct_add(t, &d, "hellobain");
|
||||
correct_add(t, &d, "ellor");
|
||||
correct_add(t, &d, "world");
|
||||
|
||||
printf("found identifiers: (2)\n");
|
||||
printf(" 1: hellobain\n");
|
||||
printf(" 2: ellor\n");
|
||||
printf(" 3: world\n");
|
||||
|
||||
char *b = correct_correct(t, "rld");
|
||||
char *a = correct_correct(t, "ello");
|
||||
char *c = correct_correct(t, "helbain");
|
||||
|
||||
printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "ello", a);
|
||||
printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "rld", b);
|
||||
printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "helbain", c);
|
||||
|
||||
correct_del(t, d);
|
||||
mem_d(b);
|
||||
mem_d(a);
|
||||
mem_d(c);
|
||||
|
||||
/*util_meminfo();*/
|
||||
|
||||
}
|
||||
|
|
15
gmqcc.h
15
gmqcc.h
|
@ -245,9 +245,9 @@
|
|||
/*===================================================================*/
|
||||
/*=========================== util.c ================================*/
|
||||
/*===================================================================*/
|
||||
void *util_memory_a (size_t, unsigned int, const char *);
|
||||
void util_memory_d (void *, unsigned int, const char *);
|
||||
void *util_memory_r (void *, size_t, unsigned int, const char *);
|
||||
void *util_memory_a (size_t, /*****/ unsigned int, const char *);
|
||||
void *util_memory_r (void *, size_t, unsigned int, const char *);
|
||||
void util_memory_d (void *);
|
||||
void util_meminfo ();
|
||||
|
||||
bool util_filexists (const char *);
|
||||
|
@ -275,7 +275,7 @@ int util_asprintf (char **ret, const char *fmt, ...);
|
|||
# define mem_r(x, n) realloc((void*)x, n)
|
||||
#else
|
||||
# define mem_a(x) util_memory_a((x), __LINE__, __FILE__)
|
||||
# define mem_d(x) util_memory_d((void*)(x), __LINE__, __FILE__)
|
||||
# define mem_d(x) util_memory_d((void*)(x))
|
||||
# define mem_r(x, n) util_memory_r((void*)(x), (n), __LINE__, __FILE__)
|
||||
#endif
|
||||
|
||||
|
@ -423,6 +423,13 @@ GMQCC_INLINE FILE *file_open (const char *, const char *);
|
|||
/*NOINLINE*/ int file_getline(char **, size_t *, FILE *);
|
||||
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== correct.c =============================*/
|
||||
/*===================================================================*/
|
||||
void correct_del(ht, size_t **);
|
||||
void correct_add(ht, size_t ***, const char *);
|
||||
char *correct_str(ht, /********/ const char *);
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== code.c ================================*/
|
||||
/*===================================================================*/
|
||||
|
|
18
util.c
18
util.c
|
@ -54,26 +54,18 @@ void *util_memory_a(size_t byte, unsigned int line, const char *file) {
|
|||
mem_start->prev = info;
|
||||
mem_start = info;
|
||||
|
||||
#if 0
|
||||
util_debug("MEM", "allocation: % 8u (bytes) address 0x%08X @ %s:%u\n", byte, data, file, line);
|
||||
#endif
|
||||
|
||||
mem_at++;
|
||||
mem_ab += info->byte;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void util_memory_d(void *ptrn, unsigned int line, const char *file) {
|
||||
void util_memory_d(void *ptrn) {
|
||||
struct memblock_t *info = NULL;
|
||||
|
||||
if (!ptrn) return;
|
||||
info = ((struct memblock_t*)ptrn - 1);
|
||||
|
||||
#if 0
|
||||
util_debug("MEM", "released: % 8u (bytes) address 0x%08X @ %s:%u\n", info->byte, ptrn, file, line);
|
||||
#endif
|
||||
|
||||
mem_db += info->byte;
|
||||
mem_dt++;
|
||||
|
||||
|
@ -95,20 +87,16 @@ void *util_memory_r(void *ptrn, size_t byte, unsigned int line, const char *file
|
|||
if (!ptrn)
|
||||
return util_memory_a(byte, line, file);
|
||||
if (!byte) {
|
||||
util_memory_d(ptrn, line, file);
|
||||
util_memory_d(ptrn);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
oldinfo = ((struct memblock_t*)ptrn - 1);
|
||||
newinfo = ((struct memblock_t*)malloc(sizeof(struct memblock_t) + byte));
|
||||
|
||||
#if 0
|
||||
util_debug("MEM", "reallocation: % 8u -> %u (bytes) address 0x%08X -> 0x%08X @ %s:%u\n", oldinfo->byte, byte, ptrn, (void*)(newinfo+1), file, line);
|
||||
#endif
|
||||
|
||||
/* new data */
|
||||
if (!newinfo) {
|
||||
util_memory_d(oldinfo+1, line, file);
|
||||
util_memory_d(oldinfo+1);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue