mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-03-08 10:09:43 +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);
|
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)
|
void qapi_free_uint64List(uint64List *obj)
|
||||||
{
|
{
|
||||||
QapiDeallocVisitor *md;
|
QapiDeallocVisitor *md;
|
||||||
|
|
|
@ -77,6 +77,15 @@ typedef struct int8List
|
||||||
struct int8List *next;
|
struct int8List *next;
|
||||||
} int8List;
|
} int8List;
|
||||||
|
|
||||||
|
typedef struct sizeList
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
uint64_t value;
|
||||||
|
uint64_t padding;
|
||||||
|
};
|
||||||
|
struct sizeList *next;
|
||||||
|
} sizeList;
|
||||||
|
|
||||||
typedef struct uint64List
|
typedef struct uint64List
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
|
@ -199,6 +208,7 @@ void qapi_free_intList(intList *obj);
|
||||||
void qapi_free_uint8List(uint8List *obj);
|
void qapi_free_uint8List(uint8List *obj);
|
||||||
void qapi_free_numberList(numberList *obj);
|
void qapi_free_numberList(numberList *obj);
|
||||||
void qapi_free_int8List(int8List *obj);
|
void qapi_free_int8List(int8List *obj);
|
||||||
|
void qapi_free_sizeList(sizeList *obj);
|
||||||
void qapi_free_uint64List(uint64List *obj);
|
void qapi_free_uint64List(uint64List *obj);
|
||||||
void qapi_free_uint16List(uint16List *obj);
|
void qapi_free_uint16List(uint16List *obj);
|
||||||
void qapi_free_boolList(boolList *obj);
|
void qapi_free_boolList(boolList *obj);
|
||||||
|
|
|
@ -160,6 +160,30 @@ out:
|
||||||
error_propagate(errp, err);
|
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)
|
void visit_type_uint64List(Visitor *m, uint64List **obj, const char *name, Error **errp)
|
||||||
{
|
{
|
||||||
Error *err = NULL;
|
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_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_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_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_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_uint16List(Visitor *m, uint16List **obj, const char *name, Error **errp);
|
||||||
void visit_type_boolList(Visitor *m, boolList **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',
|
'uint16': 'QTYPE_QINT',
|
||||||
'uint32': 'QTYPE_QINT',
|
'uint32': 'QTYPE_QINT',
|
||||||
'uint64': 'QTYPE_QINT',
|
'uint64': 'QTYPE_QINT',
|
||||||
|
'size': 'QTYPE_QINT',
|
||||||
}
|
}
|
||||||
|
|
||||||
def error_path(parent):
|
def error_path(parent):
|
||||||
|
|
Loading…
Reference in a new issue