json: Get rid of casts for "jsmntok_t"

With the upstream change having landed that adds a name to the
previously anonymous "jsmntok" typedef, we can now add a forward
declaration for that struct in our code. As a result, we no longer have
to store the "tokens" member of "struct grub_json" as a void pointer but
can instead use the forward declaration, allowing us to get rid of casts
of that field.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Patrick Steinhardt 2020-04-16 12:20:15 +02:00 committed by Daniel Kiper
parent 3b81607b55
commit e933feb578
2 changed files with 7 additions and 5 deletions

View file

@ -95,7 +95,7 @@ grub_json_getsize (grub_size_t *out, const grub_json_t *json)
{
int size;
size = ((jsmntok_t *)json->tokens)[json->idx].size;
size = json->tokens[json->idx].size;
if (size < 0)
return GRUB_ERR_OUT_OF_RANGE;
@ -106,7 +106,7 @@ grub_json_getsize (grub_size_t *out, const grub_json_t *json)
grub_err_t
grub_json_gettype (grub_json_type_t *out, const grub_json_t *json)
{
switch (((jsmntok_t *)json->tokens)[json->idx].type)
switch (json->tokens[json->idx].type)
{
case JSMN_OBJECT:
*out = GRUB_JSON_OBJECT;
@ -142,7 +142,7 @@ grub_json_getchild (grub_json_t *out, const grub_json_t *parent, grub_size_t n)
* array), as well. We thus add the children's size to n on
* each iteration.
*/
p = &((jsmntok_t *)parent->tokens)[parent->idx];
p = &parent->tokens[parent->idx];
while (n--)
n += p[offset++].size;
@ -197,7 +197,7 @@ get_value (grub_json_type_t *out_type, const char **out_string, const grub_json_
p = &child;
}
tok = &((jsmntok_t *) p->tokens)[p->idx];
tok = &p->tokens[p->idx];
p->string[tok->end] = '\0';
*out_string = p->string + tok->start;

View file

@ -36,9 +36,11 @@ enum grub_json_type
};
typedef enum grub_json_type grub_json_type_t;
typedef struct jsmntok jsmntok_t;
struct grub_json
{
void *tokens;
jsmntok_t *tokens;
char *string;
grub_size_t idx;
};