From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rtaaf-0001p3-Dt for qemu-devel@nongnu.org; Sat, 04 Feb 2012 03:03:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rtaab-0005Ex-Kd for qemu-devel@nongnu.org; Sat, 04 Feb 2012 03:03:20 -0500 Received: from mail-wi0-f173.google.com ([209.85.212.173]:51500) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rtaaa-0005CR-8e for qemu-devel@nongnu.org; Sat, 04 Feb 2012 03:03:16 -0500 Received: by mail-wi0-f173.google.com with SMTP id hi20so3684792wib.4 for ; Sat, 04 Feb 2012 00:03:15 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Sat, 4 Feb 2012 09:02:44 +0100 Message-Id: <1328342577-25732-15-git-send-email-pbonzini@redhat.com> In-Reply-To: <1328342577-25732-1-git-send-email-pbonzini@redhat.com> References: <1328342577-25732-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH v2 14/27] qdev: allow reusing get/set for legacy property List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org In some cases, a legacy property does need a special print method but not a special parse method. In this case, we can reuse the get/set from the static (non-legacy) property. If neither parse nor print is needed, though, do not register the legacy property at all. The previous patch ensures that the right fallback will be used. Signed-off-by: Paolo Bonzini --- hw/qdev.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index a731e41..660ee38 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -550,21 +550,24 @@ static void qdev_set_legacy_property(Object *obj, Visitor *v, void *opaque, * Do not use this is new code! Properties added through this interface will * be given names and types in the "legacy" namespace. * - * Legacy properties are always processed as strings. The format of the string - * depends on the property type. + * Legacy properties are string versions of other OOM properties. The format + * of the string depends on the property type. */ void qdev_property_add_legacy(DeviceState *dev, Property *prop, Error **errp) { gchar *name, *type; + if (!prop->info->print && !prop->info->parse) { + return; + } name = g_strdup_printf("legacy-%s", prop->name); type = g_strdup_printf("legacy<%s>", prop->info->legacy_name ?: prop->info->name); object_property_add(OBJECT(dev), name, type, - prop->info->print ? qdev_get_legacy_property : NULL, - prop->info->parse ? qdev_set_legacy_property : NULL, + prop->info->print ? qdev_get_legacy_property : prop->info->get, + prop->info->parse ? qdev_set_legacy_property : prop->info->set, NULL, prop, errp); -- 1.7.7.6