qapi: introduce "size" type
v1->v2: - fall back to uint64 rather than int Signed-off-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
This commit is contained in:
parent
c46f18ce2b
commit
092705d4eb
@ -234,6 +234,13 @@ void visit_type_int64(Visitor *v, int64_t *obj, const char *name, Error **errp)
|
||||
}
|
||||
}
|
||||
|
||||
void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp)
|
||||
{
|
||||
if (!error_is_set(errp)) {
|
||||
(v->type_size ? v->type_size : v->type_uint64)(v, obj, name, errp);
|
||||
}
|
||||
}
|
||||
|
||||
void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp)
|
||||
{
|
||||
if (!error_is_set(errp)) {
|
||||
|
@ -60,6 +60,8 @@ struct Visitor
|
||||
void (*type_int16)(Visitor *v, int16_t *obj, const char *name, Error **errp);
|
||||
void (*type_int32)(Visitor *v, int32_t *obj, const char *name, Error **errp);
|
||||
void (*type_int64)(Visitor *v, int64_t *obj, const char *name, Error **errp);
|
||||
/* visit_type_size() falls back to (*type_uint64)() if type_size is unset */
|
||||
void (*type_size)(Visitor *v, uint64_t *obj, const char *name, Error **errp);
|
||||
};
|
||||
|
||||
void visit_start_handle(Visitor *v, void **obj, const char *kind,
|
||||
@ -85,6 +87,7 @@ void visit_type_int8(Visitor *v, int8_t *obj, const char *name, Error **errp);
|
||||
void visit_type_int16(Visitor *v, int16_t *obj, const char *name, Error **errp);
|
||||
void visit_type_int32(Visitor *v, int32_t *obj, const char *name, Error **errp);
|
||||
void visit_type_int64(Visitor *v, int64_t *obj, const char *name, Error **errp);
|
||||
void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp);
|
||||
void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp);
|
||||
void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp);
|
||||
void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp);
|
||||
|
@ -163,6 +163,8 @@ def c_type(name):
|
||||
name == 'int64' or name == 'uint8' or name == 'uint16' or
|
||||
name == 'uint32' or name == 'uint64'):
|
||||
return name + '_t'
|
||||
elif name == 'size':
|
||||
return 'uint64_t'
|
||||
elif name == 'bool':
|
||||
return 'bool'
|
||||
elif name == 'number':
|
||||
|
Loading…
Reference in New Issue
Block a user