object: add uint property setter/getter

Backports commit 3152779cd63ba41331ef41659406f65b03e7911a from qemu
This commit is contained in:
Marc-André Lureau 2018-03-03 18:43:14 -05:00 committed by Lioncash
parent fef464c4cb
commit ca25248ecd
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 52 additions and 0 deletions

View file

@ -985,6 +985,29 @@ void object_property_set_int(struct uc_struct *uc, Object *obj, int64_t value,
int64_t object_property_get_int(struct uc_struct *uc, Object *obj,
const char *name, Error **errp);
/**
* object_property_set_uint:
* @value: the value to be written to the property
* @name: the name of the property
* @errp: returns an error if this function fails
*
* Writes an unsigned integer value to a property.
*/
void object_property_set_uint(struct uc_struct *uc, Object *obj, uint64_t value,
const char *name, Error **errp);
/**
* object_property_get_uint:
* @obj: the object
* @name: the name of the property
* @errp: returns an error if this function fails
*
* Returns: the value of the property, converted to an unsigned integer, or 0
* an error occurs (including when the property value is not an integer).
*/
uint64_t object_property_get_uint(struct uc_struct *uc, Object *obj,
const char *name, Error **errp);
/**
* object_property_set:
* @obj: the object

View file

@ -1096,6 +1096,35 @@ int64_t object_property_get_int(struct uc_struct *uc, Object *obj, const char *n
return retval;
}
void object_property_set_uint(struct uc_struct *uc, Object *obj, uint64_t value,
const char *name, Error **errp)
{
QNum *qnum = qnum_from_uint(value);
object_property_set_qobject(uc, obj, QOBJECT(qnum), name, errp);
QDECREF(qnum);
}
uint64_t object_property_get_uint(struct uc_struct *uc, Object *obj,
const char *name, Error **errp)
{
QObject *ret = object_property_get_qobject(uc, obj, name, errp);
QNum *qnum;
uint64_t retval;
if (!ret) {
return 0;
}
qnum = qobject_to_qnum(ret);
if (!qnum || !qnum_get_try_uint(qnum, &retval)) {
error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name, "uint");
retval = 0;
}
qobject_decref(ret);
return retval;
}
void object_property_parse(struct uc_struct *uc, Object *obj, const char *string,
const char *name, Error **errp)
{