From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50373) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TKADN-0000RJ-BW for qemu-devel@nongnu.org; Fri, 05 Oct 2012 11:53:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TKADI-00019U-KU for qemu-devel@nongnu.org; Fri, 05 Oct 2012 11:53:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51647) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TKADI-00019P-B4 for qemu-devel@nongnu.org; Fri, 05 Oct 2012 11:53:20 -0400 Message-ID: <506F0265.5080500@redhat.com> Date: Fri, 05 Oct 2012 17:53:09 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1349372021-31212-1-git-send-email-mdroth@linux.vnet.ibm.com> <1349372021-31212-22-git-send-email-mdroth@linux.vnet.ibm.com> <506EF7C2.1030103@redhat.com> <20121005154119.GL16157@illuin> In-Reply-To: <20121005154119.GL16157@illuin> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 21/22] qidl: qidl.h, definitions for qidl annotations List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Roth Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, qemu-devel@nongnu.org, blauwirbel@gmail.com, eblake@redhat.com Il 05/10/2012 17:41, Michael Roth ha scritto: > On Fri, Oct 05, 2012 at 05:07:46PM +0200, Paolo Bonzini wrote: >> Il 04/10/2012 19:33, Michael Roth ha scritto: >>> Signed-off-by: Michael Roth >>> --- >>> qidl.h | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 113 insertions(+) >>> create mode 100644 qidl.h >>> >>> diff --git a/qidl.h b/qidl.h >>> new file mode 100644 >>> index 0000000..eae0202 >>> --- /dev/null >>> +++ b/qidl.h >>> @@ -0,0 +1,113 @@ >>> +/* >>> + * QEMU IDL Macros/stubs >>> + * >>> + * See docs/qidl.txt for usage information. >>> + * >>> + * Copyright IBM, Corp. 2012 >>> + * >>> + * Authors: >>> + * Michael Roth >>> + * >>> + * This work is licensed under the terms of the GNU GPLv2 or later. >>> + * See the COPYING file in the top-level directory. >>> + * >>> + */ >>> + >>> +#ifndef QIDL_H >>> +#define QIDL_H >>> + >>> +#include >>> +#include "qapi/qapi-visit-core.h" >>> +#include "qemu/object.h" >>> +#include "hw/qdev-properties.h" >>> + >>> +#ifdef QIDL_GEN >>> + >>> +/* we pass the code through the preprocessor with QIDL_GEN defined to parse >>> + * structures as they'd appear after preprocessing, and use the following >>> + * definitions mostly to re-insert the initial macros/annotations so they >>> + * stick around for the parser to process >>> + */ >>> +#define QIDL(...) QIDL(__VA_ARGS__) >>> +#define QIDL_START(name, ...) QIDL_START(name, ##__VA_ARGS__) >>> + >>> +#define QIDL_VISIT_TYPE(name, v, s, f, e) >>> +#define QIDL_SCHEMA_ADD_LINK(name, obj, path, errp) >>> +#define QIDL_PROPERTIES(name) >> >> Ok, a few questions... >> >> Why do you need these to expand to nothing in the QIDL_GEN case? >> > > They don't need to, I was just trying to be explicit about what > directives were relevant to the parser and which ones were relevant to > the actually compiled code. It was more a development "aid" than > anything else though, so I think we can drop the special handling and > clean these up a bit. Yes, thanks! >>> +#define QIDL_DECLARE(name, ...) \ >> >> Can QIDL_DECLARE replace QIDL_ENABLED as the magic detection string for >> qidl compilation? >> > > In some cases the declarations will come via #include'd headers, so the > only way to do that reliable is to run it through the preprocessor > first, which is how things were done in v1. But running everything > through cpp adds substantial overhead, and just because a QIDL-fied > struct is included in a C file, it doesn't mean that the C file intends > to use any qidl-generated code. Ok, I guess I need to see some example. We can clean it up later if we find a more clever way to do things. Paolo