Update comments and error code values

This commit is contained in:
olemorud
2023-04-25 05:05:01 +02:00
parent edfea67b65
commit 47792c624b
3 changed files with 27 additions and 23 deletions

View File

@@ -5,9 +5,9 @@
/* /*
Number of elements in a hashmap Number of elements in a hashmap
Hashmaps are implemented as an array Hashmaps are implemented as an array
of linked lists. This specifies the of linked lists. This specifies the
length of the initial array. length of the initial array.
*/ */
#define OBJ_SIZE 32 #define OBJ_SIZE 32
@@ -15,25 +15,26 @@
Length of surrounding context to print Length of surrounding context to print
on parser errors. on parser errors.
Upon parser errors (e.g. syntax errors Upon parser errors (e.g. syntax errors
in the JSON file), the program outputs in the JSON file), the program outputs
the surrounding context of the error. the surrounding context of the error.
E.g: E.g:
| Expected ':' at index 123 | Expected ':' at index 123
| context: | context:
| \n\t\t{ "foo" "bar" },\n\t | \n\t\t{ "foo" "bar" },\n\t
| ^ | ^
In the above example, ERROR_CONTEXT_LEN In the above example, ERROR_CONTEXT_LEN
is set to 20. is set to 20.
*/ */
#define ERROR_CONTEXT_LEN 60 #define ERROR_CONTEXT_LEN 60
/* /*
Error codes Return codes on different errors:
EARLY_EOF - End of file unexpectedly reached
UNEXPECTED_CHAR - Unexpected character encountered EARLY_EOF - End of file unexpectedly reached
UNEXPECTED_CHAR - Unexpected character encountered
*/ */
#define EARLY_EOF 202 #define EARLY_EOF 200
#define UNEXPECTED_CHAR 200 #define UNEXPECTED_CHAR 201
#endif #endif

View File

@@ -2,8 +2,8 @@
#ifndef _UTIL_H #ifndef _UTIL_H
#define _UTIL_H #define _UTIL_H
#include <stddef.h> #include <stddef.h> // size_t
#include <stdio.h> #include <stdio.h> // FILE*
__attribute__((__noreturn__)) void err_ctx(int exit_code, FILE* fp, const char* format, ...); __attribute__((__noreturn__)) void err_ctx(int exit_code, FILE* fp, const char* format, ...);

View File

@@ -24,9 +24,9 @@ void print_object(obj_t obj, int cur_indent, int indent_amount);
Returns a hash of the string `str`. Returns a hash of the string `str`.
It seems to work well because 33 is coprime to It seems to work well because 33 is coprime to
2^32 and 2^64 (any odd number except 1 is), 2^32 and 2^64 (any odd number except 1 is),
which probably improves the distribution (I'm which probably improves the distribution (I'm
not a mathematician so I can't prove it this). not a mathematician so I can't prove this).
Multiplying a number n by 33 is the same as Multiplying a number n by 33 is the same as
bitshifting by 5 and adding n, which is faster bitshifting by 5 and adding n, which is faster
than multiplying by, say, 37. Maybe any 2^x±1 than multiplying by, say, 37. Maybe any 2^x±1
@@ -112,6 +112,9 @@ bool obj_insert(obj_t m, char* const key, struct json_value* value)
return true; return true;
} }
/*
Free memory allocated for json_value val
*/
void json_value_delete(struct json_value val) void json_value_delete(struct json_value val)
{ {
switch (val.type) { switch (val.type) {
@@ -140,7 +143,7 @@ void json_value_delete(struct json_value val)
/* /*
Free memory allocated for obj Free memory allocated for obj
TODO: recurively delete children objects Recursively deletes children objects
*/ */
void obj_delete(obj_t* m) void obj_delete(obj_t* m)
{ {