[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/9] qmisc: Introduce qobject_from_va()
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 3/9] qmisc: Introduce qobject_from_va() |
Date: |
Tue, 13 Oct 2009 13:57:00 -0300 |
It will be used by the (to be introduced) QError module.
Signed-off-by: Luiz Capitulino <address@hidden>
---
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 <stdarg.h>
#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
[Qemu-devel] [PATCH 6/9] QError: Add qdev not found error, Luiz Capitulino, 2009/10/13