diff options
author | David Tolnay <dtolnay@gmail.com> | 2015-07-04 14:56:07 -0700 |
---|---|---|
committer | David Tolnay <dtolnay@gmail.com> | 2015-07-04 15:08:01 -0700 |
commit | 1e5e0c9fe2bed8d55cc6d113410c0fdea07f5373 (patch) | |
tree | 45e722809dfc2088ddf632f4ad32a3c09b17fa8b /util.c | |
parent | 05899f8b3ee7a78e5f9d8380a9cae81c72cf6456 (diff) |
Make jq.h usable from C++
Previously, with clang++:
jq.h:46:37: error: typedef redefinition with different
types ('struct jq_util_input_state *' vs 'jq_util_input_state')
With g++:
jq.h:46:37: error: conflicting declaration
‘typedef struct jq_util_input_state* jq_util_input_state’
This typedef was added to libjq by commit 0d41447 which was
after the 1.4 release, so although it is a public API, this
is not a backcompat break because it has never been in a
release.
Specifying the "*" at all uses of jq_util_input_state is
slightly tedious, but jq_state already works that way, so at
least it will be consistent.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 28 |
1 files changed, 14 insertions, 14 deletions
@@ -203,12 +203,12 @@ static void fprinter(void *data, const char *fname) { } // If parser == NULL -> RAW -jq_util_input_state jq_util_input_init(jq_util_msg_cb err_cb, void *err_cb_data) { +jq_util_input_state *jq_util_input_init(jq_util_msg_cb err_cb, void *err_cb_data) { if (err_cb == NULL) { err_cb = fprinter; err_cb_data = stderr; } - jq_util_input_state new_state = jv_mem_alloc(sizeof(*new_state)); + jq_util_input_state *new_state = jv_mem_alloc(sizeof(*new_state)); memset(new_state, 0, sizeof(*new_state)); new_state->err_cb = err_cb; new_state->err_cb_data = err_cb_data; @@ -226,7 +226,7 @@ jq_util_input_state jq_util_input_init(jq_util_msg_cb err_cb, void *err_cb_data) return new_state; } -void jq_util_input_set_parser(jq_util_input_state state, jv_parser *parser, int slurp) { +void jq_util_input_set_parser(jq_util_input_state *state, jv_parser *parser, int slurp) { assert(!jv_is_valid(state->slurped)); state->parser = parser; @@ -238,8 +238,8 @@ void jq_util_input_set_parser(jq_util_input_state state, jv_parser *parser, int state->slurped = jv_invalid(); } -void jq_util_input_free(jq_util_input_state *state) { - jq_util_input_state old_state = *state; +void jq_util_input_free(jq_util_input_state **state) { + jq_util_input_state *old_state = *state; *state = NULL; if (old_state == NULL) return; @@ -254,22 +254,22 @@ void jq_util_input_free(jq_util_input_state *state) { jv_mem_free(old_state); } -void jq_util_input_add_input(jq_util_input_state state, const char *fname) { +void jq_util_input_add_input(jq_util_input_state *state, const char *fname) { state->files = jv_mem_realloc(state->files, (state->nfiles + 1) * sizeof(state->files[0])); state->files[state->nfiles++] = jv_mem_strdup(fname); } -int jq_util_input_errors(jq_util_input_state state) { +int jq_util_input_errors(jq_util_input_state *state) { return state->failures; } -static const char *next_file(jq_util_input_state state) { +static const char *next_file(jq_util_input_state *state) { if (state->curr_file < state->nfiles) return state->files[state->curr_file++]; return NULL; } -static int jq_util_input_read_more(jq_util_input_state state) { +static int jq_util_input_read_more(jq_util_input_state *state) { if (!state->current_input || feof(state->current_input) || ferror(state->current_input)) { if (state->current_input && ferror(state->current_input)) { // System-level input error on the stream. It will be closed (below). @@ -360,7 +360,7 @@ static int jq_util_input_read_more(jq_util_input_state state) { } jv jq_util_input_next_input_cb(jq_state *jq, void *data) { - return jq_util_input_next_input((jq_util_input_state)data); + return jq_util_input_next_input((jq_util_input_state *)data); } // Return the current_filename:current_line @@ -371,7 +371,7 @@ jv jq_util_input_get_position(jq_state *jq) { assert(cb == jq_util_input_next_input_cb); if (cb != jq_util_input_next_input_cb) return jv_invalid_with_msg(jv_string("Invalid jq_util_input API usage")); - jq_util_input_state s = (jq_util_input_state)cb_data; + jq_util_input_state *s = (jq_util_input_state *)cb_data; // We can't assert that current_filename is a string because if // the error was a JSON parser error then we may not have set @@ -389,7 +389,7 @@ jv jq_util_input_get_current_filename(jq_state* jq) { jq_get_input_cb(jq, &cb, &cb_data); if (cb != jq_util_input_next_input_cb) return jv_invalid_with_msg(jv_string("Unknown input filename")); - jq_util_input_state s = (jq_util_input_state)cb_data; + jq_util_input_state *s = (jq_util_input_state *)cb_data; jv v = jv_copy(s->current_filename); return v; } @@ -400,7 +400,7 @@ jv jq_util_input_get_current_line(jq_state* jq) { jq_get_input_cb(jq, &cb, &cb_data); if (cb != jq_util_input_next_input_cb) return jv_invalid_with_msg(jv_string("Unknown input line number")); - jq_util_input_state s = (jq_util_input_state)cb_data; + jq_util_input_state *s = (jq_util_input_state *)cb_data; jv v = jv_number(s->current_line); return v; } @@ -408,7 +408,7 @@ jv jq_util_input_get_current_line(jq_state* jq) { // Blocks to read one more input from stdin and/or given files // When slurping, it returns just one value -jv jq_util_input_next_input(jq_util_input_state state) { +jv jq_util_input_next_input(jq_util_input_state *state) { int is_last = 0; jv value = jv_invalid(); // need more input do { |