1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 from FrameClasses
import FRAME_CLASSES
8 HEADER
= "// THIS IS AUTOGENERATED BY GenerateFrameLists.py. DO NOT EDIT\n"
11 # Returns a list of list of FrameClass objects. The outermost list groups
12 # the FrameClasses by their frame type, and is sorted from the largest group
13 # to the smallest, and otherwise sorted by the frame type or class name.
14 def grouped_frame_classes():
16 for frame
in FRAME_CLASSES
:
18 groups
.setdefault(frame
.ty
, []).append(frame
)
19 groups
= groups
.values()
20 groups
.sort(key
=lambda x
: (-len(x
), x
[0].ty
if len(x
) > 1 else x
[0].cls
))
24 def generate_frame_id_list_h(output
, *ignore
):
25 groups
= grouped_frame_classes()
29 output
.write("FRAME_ID(%s, %s, %s)\n" % (frame
.cls
, frame
.ty
, frame
.leafness
))
30 for frame
in FRAME_CLASSES
:
31 if not frame
.is_concrete
:
32 output
.write("ABSTRACT_FRAME_ID(%s)\n" % frame
.cls
)
35 def generate_frame_type_list_h(output
, *ignore
):
36 groups
= grouped_frame_classes()
39 output
.write("FRAME_TYPE(%s, %s, %s)\n" % (group
[0].ty
, group
[0].cls
, group
[-1].cls
))