loci: generate lists from the IR
diff --git a/c_gen/codegen.py b/c_gen/codegen.py
index e2646e4..b88c111 100644
--- a/c_gen/codegen.py
+++ b/c_gen/codegen.py
@@ -43,7 +43,8 @@
 import c_gen.of_g_legacy as of_g
 import c_gen.type_maps as type_maps
 import c_gen.c_type_maps as c_type_maps
-import c_gen.loxi_utils_legacy as loxi_utils
+import loxi_utils.loxi_utils as loxi_utils
+import c_gen.loxi_utils_legacy as loxi_utils_legacy
 
 CLASS_CHUNK_SIZE = 32
 
@@ -146,9 +147,19 @@
             legacy_code=tmp.getvalue())
 
 def generate_lists(install_dir):
-    for cls in of_g.ordered_list_objects:
+    # Collect all the lists in use
+    list_oftypes = set()
+    for uclass in loxi_globals.unified.classes:
+        for version, ofclass in sorted(uclass.version_classes.items()):
+            for m in ofclass.members:
+                if isinstance(m, ir.OFDataMember):
+                    if loxi_utils.oftype_is_list(m.oftype):
+                        list_oftypes.add(m.oftype)
+
+    for oftype in sorted(list(list_oftypes)):
+        cls, e_cls = loxi_utils_legacy.list_name_extract(oftype)
+        e_cls = e_cls[:-2]
         with template_utils.open_output(install_dir, "loci/src/%s.c" % cls) as out:
-            e_cls = loxi_utils.list_to_entry_type(cls)
             util.render_template(out, "list.c", cls=cls, e_cls=e_cls)
             # Append legacy generated code
             c_code_gen.gen_new_function_definitions(out, cls)