type_maps: factor code out of top level
diff --git a/loxi_front_end/type_maps.py b/loxi_front_end/type_maps.py
index c231394..b16c07c 100644
--- a/loxi_front_end/type_maps.py
+++ b/loxi_front_end/type_maps.py
@@ -393,35 +393,6 @@
of_meter_band = meter_band_types
)
-################################################################
-# Now generate the maps from parent to list of subclasses
-################################################################
-
-# # These lists have entries which are a fixed type, no inheritance
-# fixed_lists = [
-# "of_list_bucket",
-# "of_list_bucket_counter",
-# "of_list_flow_stats_entry",
-# "of_list_group_desc_stats_entry",
-# "of_list_group_stats_entry",
-# "of_list_packet_queue",
-# "of_list_port_desc",
-# "of_list_port_stats_entry",
-# "of_list_queue_stats_entry",
-# "of_list_table_stats_entry"
-# ]
-
-# for cls in fixed_lists:
-# base_type = list_to_entry_type(cls)
-# of_g.inheritance_map[base_type] = [base_type]
-
-inheritance_map = dict()
-for parent, versioned in inheritance_data.items():
- inheritance_map[parent] = set()
- for ver, subclasses in versioned.items():
- for subcls in subclasses:
- inheritance_map[parent].add(subcls)
-
def class_is_virtual(cls):
"""
Returns True if cls is a virtual class
@@ -727,21 +698,29 @@
################################################################
type_val = dict()
+inheritance_map = dict()
-for version, classes in message_types.items():
- for cls in classes:
- name = "of_" + cls
- type_val[(name, version)] = classes[cls]
+def generate_maps():
+ for parent, versioned in inheritance_data.items():
+ inheritance_map[parent] = set()
+ for ver, subclasses in versioned.items():
+ for subcls in subclasses:
+ inheritance_map[parent].add(subcls)
-for parent, versioned in inheritance_data.items():
- for version, subclasses in versioned.items():
- for subcls, value in subclasses.items():
- name = parent + "_" + subcls
- type_val[(name, version)] = value
+ for version, classes in message_types.items():
+ for cls in classes:
+ name = "of_" + cls
+ type_val[(name, version)] = classes[cls]
-# Special case OF-1.2 match type
-type_val[("of_match_v3", of_g.VERSION_1_2)] = 0x8000
-type_val[("of_match_v3", of_g.VERSION_1_3)] = 0x8000
+ for parent, versioned in inheritance_data.items():
+ for version, subclasses in versioned.items():
+ for subcls, value in subclasses.items():
+ name = parent + "_" + subcls
+ type_val[(name, version)] = value
+
+ # Special case OF-1.2 match type
+ type_val[("of_match_v3", of_g.VERSION_1_2)] = 0x8000
+ type_val[("of_match_v3", of_g.VERSION_1_3)] = 0x8000
# Utility function
def dict_to_array(d, m_val, def_val=-1):
diff --git a/loxigen.py b/loxigen.py
index f7a9dff..ddb2616 100755
--- a/loxigen.py
+++ b/loxigen.py
@@ -568,6 +568,7 @@
log("\nGenerating files for target language %s\n" % of_g.options.lang)
initialize_versions()
+ type_maps.generate_maps()
read_input()
analyze_input()
unify_input()