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:
parent
3b81607b55
commit
e933feb578
2 changed files with 7 additions and 5 deletions
|
@ -95,7 +95,7 @@ grub_json_getsize (grub_size_t *out, const grub_json_t *json)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
size = ((jsmntok_t *)json->tokens)[json->idx].size;
|
size = json->tokens[json->idx].size;
|
||||||
if (size < 0)
|
if (size < 0)
|
||||||
return GRUB_ERR_OUT_OF_RANGE;
|
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_err_t
|
||||||
grub_json_gettype (grub_json_type_t *out, const grub_json_t *json)
|
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:
|
case JSMN_OBJECT:
|
||||||
*out = GRUB_JSON_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
|
* array), as well. We thus add the children's size to n on
|
||||||
* each iteration.
|
* each iteration.
|
||||||
*/
|
*/
|
||||||
p = &((jsmntok_t *)parent->tokens)[parent->idx];
|
p = &parent->tokens[parent->idx];
|
||||||
while (n--)
|
while (n--)
|
||||||
n += p[offset++].size;
|
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;
|
p = &child;
|
||||||
}
|
}
|
||||||
|
|
||||||
tok = &((jsmntok_t *) p->tokens)[p->idx];
|
tok = &p->tokens[p->idx];
|
||||||
p->string[tok->end] = '\0';
|
p->string[tok->end] = '\0';
|
||||||
|
|
||||||
*out_string = p->string + tok->start;
|
*out_string = p->string + tok->start;
|
||||||
|
|
|
@ -36,9 +36,11 @@ enum grub_json_type
|
||||||
};
|
};
|
||||||
typedef enum grub_json_type grub_json_type_t;
|
typedef enum grub_json_type grub_json_type_t;
|
||||||
|
|
||||||
|
typedef struct jsmntok jsmntok_t;
|
||||||
|
|
||||||
struct grub_json
|
struct grub_json
|
||||||
{
|
{
|
||||||
void *tokens;
|
jsmntok_t *tokens;
|
||||||
char *string;
|
char *string;
|
||||||
grub_size_t idx;
|
grub_size_t idx;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue