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
}
}
-char *correct_correct(ht table, const char *ident) {
+char *correct_str(ht table, const char *ident) {
char **e1;
char **e2;
char *e1ident;
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();*/
-
-}
/*===================================================================*/
/*=========================== 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 *);
# 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
/*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 ================================*/
/*===================================================================*/
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++;
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;
}