提交 c59734e3 编写于 作者: P Peter Krempa

qemu: qapi: Split up virQEMUQAPISchemaObjectGetType

Split it into a function that returns the whole schema entry so that we
can do additional checks and a helper getting the type string from the
schema entry.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 cbcee323
......@@ -33,24 +33,24 @@ VIR_LOG_INIT("qemu.qemu_qapi");
/**
* virQEMUQAPISchemaObjectGetType:
* virQEMUQAPISchemaObjectGet:
* @field: name of the object containing the requested type
* @name: name of the requested type
* @namefield: name of the object property holding @name
* @elem: QAPI schema entry JSON object
*
* Helper that selects the type of a QMP schema object member or it's variant
* member. Returns the type string on success or NULL on error.
* member. Returns the QMP entry on success or NULL on error.
*/
static const char *
virQEMUQAPISchemaObjectGetType(const char *field,
const char *name,
const char *namefield,
virJSONValuePtr elem)
static virJSONValuePtr
virQEMUQAPISchemaObjectGet(const char *field,
const char *name,
const char *namefield,
virJSONValuePtr elem)
{
virJSONValuePtr arr;
virJSONValuePtr cur;
const char *curname;
const char *type;
size_t i;
if (!(arr = virJSONValueObjectGetArray(elem, field)))
......@@ -58,18 +58,49 @@ virQEMUQAPISchemaObjectGetType(const char *field,
for (i = 0; i < virJSONValueArraySize(arr); i++) {
if (!(cur = virJSONValueArrayGet(arr, i)) ||
!(curname = virJSONValueObjectGetString(cur, namefield)) ||
!(type = virJSONValueObjectGetString(cur, "type")))
!(curname = virJSONValueObjectGetString(cur, namefield)))
continue;
if (STREQ(name, curname))
return type;
return cur;
}
return NULL;
}
static const char *
virQEMUQAPISchemaTypeFromObject(virJSONValuePtr obj)
{
if (!obj)
return NULL;
return virJSONValueObjectGetString(obj, "type");
}
/**
* virQEMUQAPISchemaObjectGetType:
* @field: name of the object containing the requested type
* @name: name of the requested type
* @namefield: name of the object property holding @name
* @elem: QAPI schema entry JSON object
*
* Helper that selects the type of a QMP schema object member or it's variant
* member. Returns the type string on success or NULL on error.
*/
static const char *
virQEMUQAPISchemaObjectGetType(const char *field,
const char *name,
const char *namefield,
virJSONValuePtr elem)
{
virJSONValuePtr obj = virQEMUQAPISchemaObjectGet(field, name, namefield, elem);
return virQEMUQAPISchemaTypeFromObject(obj);
}
static virJSONValuePtr
virQEMUQAPISchemaTraverse(const char *baseName,
char **query,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册