Commit 8a84767c authored by Markus Armbruster's avatar Markus Armbruster Committed by Eric Blake
Browse files

qapi: Generate in source order



The generators' conversion to visitors (merge commit 9e72681d)
changed the processing order of entities from source order to
alphabetical order.  The next commit needs source order, so change it
back.

Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20180211093607.27351-17-armbru@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarMichael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: default avatarEric Blake <eblake@redhat.com>
parent 97f02494
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1474,6 +1474,7 @@ class QAPISchema(object):
        parser = QAPISchemaParser(open(fname, 'r'))
        exprs = check_exprs(parser.exprs)
        self.docs = parser.docs
        self._entity_list = []
        self._entity_dict = {}
        self._predefining = True
        self._def_predefineds()
@@ -1485,6 +1486,7 @@ class QAPISchema(object):
        # Only the predefined types are allowed to not have info
        assert ent.info or self._predefining
        assert ent.name not in self._entity_dict
        self._entity_list.append(ent)
        self._entity_dict[ent.name] = ent

    def lookup_entity(self, name, typ=None):
@@ -1683,12 +1685,12 @@ class QAPISchema(object):
                assert False

    def check(self):
        for (name, ent) in sorted(self._entity_dict.items()):
        for ent in self._entity_list:
            ent.check(self)

    def visit(self, visitor):
        visitor.visit_begin(self)
        for (name, entity) in sorted(self._entity_dict.items()):
        for entity in self._entity_list:
            if visitor.visit_needed(entity):
                entity.visit(visitor)
        visitor.visit_end()
+1 −1
Original line number Diff line number Diff line
object q_empty
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
    prefix QTYPE
enum Status ['good', 'bad', 'ugly']
object q_empty
+2 −2
Original line number Diff line number Diff line
enum Enum ['one', 'two']
object q_empty
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
    prefix QTYPE
object q_empty
enum Enum ['one', 'two']
doc symbol=Enum
    body=
== Produces *invalid* texinfo
+16 −16
Original line number Diff line number Diff line
object q_empty
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
    prefix QTYPE
enum Enum ['one', 'two']
object Base
    member base1: Enum optional=False
enum Enum ['one', 'two']
object Variant1
    member var1: str optional=False
object Variant2
object Object
    base Base
    tag base1
    case one: Variant1
    case two: Variant2
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
    prefix QTYPE
object q_obj_Variant1-wrapper
    member data: Variant1 optional=False
object q_obj_Variant2-wrapper
    member data: Variant2 optional=False
enum SugaredUnionKind ['one', 'two']
object SugaredUnion
    member type: SugaredUnionKind optional=False
    tag type
    case one: q_obj_Variant1-wrapper
    case two: q_obj_Variant2-wrapper
enum SugaredUnionKind ['one', 'two']
object Variant1
    member var1: str optional=False
object Variant2
command cmd q_obj_cmd-arg -> Object
   gen=True success_response=True boxed=False
command cmd-boxed Object -> None
   gen=True success_response=True boxed=True
object q_empty
object q_obj_Variant1-wrapper
    member data: Variant1 optional=False
object q_obj_Variant2-wrapper
    member data: Variant2 optional=False
object q_obj_cmd-arg
    member arg1: int optional=False
    member arg2: str optional=True
    member arg3: bool optional=False
command cmd q_obj_cmd-arg -> Object
   gen=True success_response=True boxed=False
command cmd-boxed Object -> None
   gen=True success_response=True boxed=True
doc freeform
    body=
= Section
+1 −1
Original line number Diff line number Diff line
object q_empty
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
    prefix QTYPE
object q_empty
Loading