mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
qapi: Swap 'name' in visit_* callbacks to match public API
As explained in the previous patches, matching argument order of 'name, &value' to JSON's "name":value makes sense. However, while the last two patches were easy with Coccinelle, I ended up doing this one all by hand. Now all the visitor callbacks match the main interface. The compiler is able to enforce that all clients match the changed interface in visitor-impl.h, even where two pointers are being swapped, because only one of the two pointers is const (if that were not the case, then C's looseness on treating 'char *' like 'void *' would have made review a bit harder). Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <1454075341-13658-21-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
d7bce9999d
commit
0b2a0d6bb2
8 changed files with 95 additions and 93 deletions
|
@ -18,8 +18,8 @@
|
|||
struct Visitor
|
||||
{
|
||||
/* Must be set */
|
||||
void (*start_struct)(Visitor *v, void **obj, const char *kind,
|
||||
const char *name, size_t size, Error **errp);
|
||||
void (*start_struct)(Visitor *v, const char *name, void **obj,
|
||||
const char *kind, size_t size, Error **errp);
|
||||
void (*end_struct)(Visitor *v, Error **errp);
|
||||
|
||||
void (*start_implicit_struct)(Visitor *v, void **obj, size_t size,
|
||||
|
@ -30,38 +30,41 @@ struct Visitor
|
|||
GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp);
|
||||
void (*end_list)(Visitor *v, Error **errp);
|
||||
|
||||
void (*type_enum)(Visitor *v, int *obj, const char * const strings[],
|
||||
const char *kind, const char *name, Error **errp);
|
||||
void (*type_enum)(Visitor *v, const char *name, int *obj,
|
||||
const char *const strings[], const char *kind,
|
||||
Error **errp);
|
||||
/* May be NULL; only needed for input visitors. */
|
||||
void (*get_next_type)(Visitor *v, QType *type, bool promote_int,
|
||||
const char *name, Error **errp);
|
||||
void (*get_next_type)(Visitor *v, const char *name, QType *type,
|
||||
bool promote_int, Error **errp);
|
||||
|
||||
/* Must be set. */
|
||||
void (*type_int64)(Visitor *v, int64_t *obj, const char *name,
|
||||
void (*type_int64)(Visitor *v, const char *name, int64_t *obj,
|
||||
Error **errp);
|
||||
/* Must be set. */
|
||||
void (*type_uint64)(Visitor *v, uint64_t *obj, const char *name,
|
||||
void (*type_uint64)(Visitor *v, const char *name, uint64_t *obj,
|
||||
Error **errp);
|
||||
/* Optional; fallback is type_uint64(). */
|
||||
void (*type_size)(Visitor *v, uint64_t *obj, const char *name,
|
||||
void (*type_size)(Visitor *v, const char *name, uint64_t *obj,
|
||||
Error **errp);
|
||||
/* Must be set. */
|
||||
void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp);
|
||||
void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp);
|
||||
void (*type_number)(Visitor *v, double *obj, const char *name,
|
||||
void (*type_bool)(Visitor *v, const char *name, bool *obj, Error **errp);
|
||||
void (*type_str)(Visitor *v, const char *name, char **obj, Error **errp);
|
||||
void (*type_number)(Visitor *v, const char *name, double *obj,
|
||||
Error **errp);
|
||||
void (*type_any)(Visitor *v, QObject **obj, const char *name,
|
||||
void (*type_any)(Visitor *v, const char *name, QObject **obj,
|
||||
Error **errp);
|
||||
|
||||
/* May be NULL; most useful for input visitors. */
|
||||
void (*optional)(Visitor *v, bool *present, const char *name);
|
||||
void (*optional)(Visitor *v, const char *name, bool *present);
|
||||
|
||||
bool (*start_union)(Visitor *v, bool data_present, Error **errp);
|
||||
};
|
||||
|
||||
void input_type_enum(Visitor *v, int *obj, const char * const strings[],
|
||||
const char *kind, const char *name, Error **errp);
|
||||
void output_type_enum(Visitor *v, int *obj, const char * const strings[],
|
||||
const char *kind, const char *name, Error **errp);
|
||||
void input_type_enum(Visitor *v, const char *name, int *obj,
|
||||
const char *const strings[], const char *kind,
|
||||
Error **errp);
|
||||
void output_type_enum(Visitor *v, const char *name, int *obj,
|
||||
const char *const strings[], const char *kind,
|
||||
Error **errp);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue