object: add uint property setter/getter

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20170607163635.17635-13-marcandre.lureau@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
Marc-André Lureau 2017-06-07 20:36:04 +04:00 committed by Markus Armbruster
parent 5923f85fb8
commit 3152779cd6
2 changed files with 52 additions and 0 deletions

View File

@ -1093,6 +1093,29 @@ void object_property_set_int(Object *obj, int64_t value,
int64_t object_property_get_int(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(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(Object *obj, const char *name,
Error **errp);
/**
* object_property_get_enum:
* @obj: the object

View File

@ -1216,6 +1216,35 @@ int64_t object_property_get_int(Object *obj, const char *name,
return retval;
}
void object_property_set_uint(Object *obj, uint64_t value,
const char *name, Error **errp)
{
QNum *qnum = qnum_from_uint(value);
object_property_set_qobject(obj, QOBJECT(qnum), name, errp);
QDECREF(qnum);
}
uint64_t object_property_get_uint(Object *obj, const char *name,
Error **errp)
{
QObject *ret = object_property_get_qobject(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;
}
typedef struct EnumProperty {
const char * const *strings;
int (*get)(Object *, Error **);