From mboxrd@z Thu Jan 1 00:00:00 1970 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 From: Luiz Capitulino 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> Subject: [Qemu-devel] [PATCH 3/9] qmisc: Introduce qobject_from_va() List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, kraxel@redhat.com 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 */ -- 1.6.5.rc3.8.g8ba5e