• E
    qapi: Convert QType into QAPI built-in enum type · 7264f5c5
    Eric Blake 提交于
    What's more meta than using qapi to define qapi? :)
    
    Convert QType into a full-fledged[*] builtin qapi enum type, so
    that a subsequent patch can then use it as the discriminator
    type of qapi alternate types.  Fortunately, the judicious use of
    'prefix' in the qapi definition avoids churn to the spelling of
    the enum constants.
    
    To avoid circular definitions, we have to flip the order of
    inclusion between "qobject.h" vs. "qapi-types.h".  Back in commit
    28770e05, we had the latter include the former, so that we could
    use 'QObject *' for our implementation of 'any'.  But that usage
    also works with only a forward declaration, whereas the
    definition of QObject requires QType to be a complete type.
    
    [*] The type has to be builtin, rather than declared in
    qapi/common.json, because we want to use it for alternates even
    when common.json is not included. But since it is the first
    builtin enum type, we have to add special cases to qapi-types
    and qapi-visit to only emit definitions once, even when two
    qapi files are being compiled into the same binary (the way we
    already handled builtin list types like 'intList').  We may
    need to revisit how multiple qapi files share common types,
    but that's a project for another day.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Message-Id: <1449033659-25497-4-git-send-email-eblake@redhat.com>
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    7264f5c5
comments.out 152 字节