mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-02 02:11:09 +00:00
qapi: Fix generation of 'size' builtin type
We were missing the 'size' builtin type (which means that QAPI using [ 'size' ] would fail to compile). Backports commit cb17f79eef0d161e81ac457e4c1f124405be2a18 from qemu
This commit is contained in:
parent
9d5a99b029
commit
79c351d3e6
|
@ -135,6 +135,21 @@ void qapi_free_int8List(int8List *obj)
|
|||
qapi_dealloc_visitor_cleanup(md);
|
||||
}
|
||||
|
||||
void qapi_free_sizeList(sizeList *obj)
|
||||
{
|
||||
QapiDeallocVisitor *md;
|
||||
Visitor *v;
|
||||
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
visit_type_sizeList(v, &obj, NULL, NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
}
|
||||
|
||||
void qapi_free_uint64List(uint64List *obj)
|
||||
{
|
||||
QapiDeallocVisitor *md;
|
||||
|
|
|
@ -77,6 +77,15 @@ typedef struct int8List
|
|||
struct int8List *next;
|
||||
} int8List;
|
||||
|
||||
typedef struct sizeList
|
||||
{
|
||||
union {
|
||||
uint64_t value;
|
||||
uint64_t padding;
|
||||
};
|
||||
struct sizeList *next;
|
||||
} sizeList;
|
||||
|
||||
typedef struct uint64List
|
||||
{
|
||||
union {
|
||||
|
@ -199,6 +208,7 @@ void qapi_free_intList(intList *obj);
|
|||
void qapi_free_uint8List(uint8List *obj);
|
||||
void qapi_free_numberList(numberList *obj);
|
||||
void qapi_free_int8List(int8List *obj);
|
||||
void qapi_free_sizeList(sizeList *obj);
|
||||
void qapi_free_uint64List(uint64List *obj);
|
||||
void qapi_free_uint16List(uint16List *obj);
|
||||
void qapi_free_boolList(boolList *obj);
|
||||
|
|
|
@ -160,6 +160,30 @@ out:
|
|||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
void visit_type_sizeList(Visitor *m, sizeList **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
GenericList *i, **prev;
|
||||
|
||||
visit_start_list(m, name, &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (prev = (GenericList **)obj;
|
||||
!err && (i = visit_next_list(m, prev)) != NULL;
|
||||
prev = &i) {
|
||||
sizeList *native_i = (sizeList *)i;
|
||||
visit_type_size(m, &native_i->value, NULL, &err);
|
||||
}
|
||||
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
visit_end_list(m);
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
void visit_type_uint64List(Visitor *m, uint64List **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
|
|
@ -29,6 +29,7 @@ void visit_type_intList(Visitor *m, intList **obj, const char *name, Error **err
|
|||
void visit_type_uint8List(Visitor *m, uint8List **obj, const char *name, Error **errp);
|
||||
void visit_type_numberList(Visitor *m, numberList **obj, const char *name, Error **errp);
|
||||
void visit_type_int8List(Visitor *m, int8List **obj, const char *name, Error **errp);
|
||||
void visit_type_sizeList(Visitor *m, sizeList **obj, const char *name, Error **errp);
|
||||
void visit_type_uint64List(Visitor *m, uint64List **obj, const char *name, Error **errp);
|
||||
void visit_type_uint16List(Visitor *m, uint16List **obj, const char *name, Error **errp);
|
||||
void visit_type_boolList(Visitor *m, boolList **obj, const char *name, Error **errp);
|
||||
|
|
|
@ -29,6 +29,7 @@ builtin_types = {
|
|||
'uint16': 'QTYPE_QINT',
|
||||
'uint32': 'QTYPE_QINT',
|
||||
'uint64': 'QTYPE_QINT',
|
||||
'size': 'QTYPE_QINT',
|
||||
}
|
||||
|
||||
def error_path(parent):
|
||||
|
|
Loading…
Reference in a new issue