From patchwork Tue Oct 13 16:57:00 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Capitulino X-Patchwork-Id: 35876 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5B964B7B9E for ; Wed, 14 Oct 2009 04:04:54 +1100 (EST) Received: from localhost ([127.0.0.1]:47065 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mxknq-0008MX-N0 for incoming@patchwork.ozlabs.org; Tue, 13 Oct 2009 13:04:50 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mxkgv-00048k-Fc for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mxkgp-00041F-Qe for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:40 -0400 Received: from [199.232.76.173] (port=51963 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mxkgo-00040r-Q1 for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:26245) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Mxkgo-00023m-9D for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:34 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n9DGvXbn024560; Tue, 13 Oct 2009 12:57:33 -0400 Received: from localhost (vpn-13-167.rdu.redhat.com [10.11.13.167]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n9DGvVhg003953; Tue, 13 Oct 2009 12:57:32 -0400 From: Luiz Capitulino To: qemu-devel@nongnu.org Date: Tue, 13 Oct 2009 13:57:00 -0300 Message-Id: <1255453026-18637-4-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1255453026-18637-1-git-send-email-lcapitulino@redhat.com> References: <1255453026-18637-1-git-send-email-lcapitulino@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: aliguori@us.ibm.com, kraxel@redhat.com Subject: [Qemu-devel] [PATCH 3/9] qmisc: Introduce qobject_from_va() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org It will be used by the (to be introduced) QError module. Signed-off-by: Luiz Capitulino --- qmisc.c | 44 +++++++++++++++++++++++++++++++------------- qmisc.h | 2 ++ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/qmisc.c b/qmisc.c index 42b6f22..2bca278 100644 --- a/qmisc.c +++ b/qmisc.c @@ -172,6 +172,36 @@ static QObject *build_qobject(const char **fmt, va_list *args) } /** + * qobject_from_va(): Create a QObject from the specified va_list + * + * Same as qobject_from_fmt(), but with a va_list argument. + */ +QObject *qobject_from_va(const char *format, va_list va) +{ + va_list lva; + QObject *obj; + const char *fmt = format; + + va_copy(lva, va); + + switch (*fmt) { + case '[': + fmt++; + obj = do_mklist(&fmt, &lva, ']', count_format(fmt, ']')); + break; + case '{': + fmt++; + obj = do_mkdict(&fmt, &lva, '}', count_format(fmt, '}')); + break; + default: + obj = build_qobject(&fmt, &lva); + break; + } + + return obj; +} + +/** * qobject_from_fmt(): build QObjects from a specified format. * * Valid characters of the format: @@ -203,19 +233,7 @@ QObject *qobject_from_fmt(const char *fmt, ...) QObject *obj; va_start(args, fmt); - switch (*fmt) { - case '[': - fmt++; - obj = do_mklist(&fmt, &args, ']', count_format(fmt, ']')); - break; - case '{': - fmt++; - obj = do_mkdict(&fmt, &args, '}', count_format(fmt, '}')); - break; - default: - obj = build_qobject(&fmt, &args); - break; - } + obj = qobject_from_va(fmt, args); va_end(args); return obj; diff --git a/qmisc.h b/qmisc.h index ac481fe..16070f9 100644 --- a/qmisc.h +++ b/qmisc.h @@ -12,8 +12,10 @@ #ifndef QMISC_H #define QMISC_H +#include #include "qobject.h" +QObject *qobject_from_va(const char *format, va_list va); QObject *qobject_from_fmt(const char *fmt, ...); #endif /* QMISC_H */