loci: generate header classes
diff --git a/c_gen/codegen.py b/c_gen/codegen.py
index 9ec54d0..a526a95 100644
--- a/c_gen/codegen.py
+++ b/c_gen/codegen.py
@@ -88,6 +88,17 @@
             c_code_gen.gen_new_function_definitions(out, uclass.name)
             c_code_gen.gen_accessor_definitions(out, uclass.name)
 
+# TODO remove header classes and use the corresponding class instead
+def generate_header_classes(install_dir):
+    for cls in of_g.standard_class_order:
+        if cls.find("_header") < 0:
+            continue
+        with template_utils.open_output(install_dir, "loci/src/%s.c" % cls) as out:
+            util.render_template(out, "class.c")
+            # Append legacy generated code
+            c_code_gen.gen_new_function_definitions(out, cls)
+            c_code_gen.gen_accessor_definitions(out, cls)
+
 def generate_lists(install_dir):
     for cls in of_g.ordered_list_objects:
         with template_utils.open_output(install_dir, "loci/src/%s.c" % cls) as out:
diff --git a/lang_c.py b/lang_c.py
index 83cfb93..33d93e7 100644
--- a/lang_c.py
+++ b/lang_c.py
@@ -176,4 +176,5 @@
             fn(outfile, os.path.basename(name))
     c_gen.codegen.gen_push_wire_types(install_dir)
     c_gen.codegen.generate_classes(install_dir)
+    c_gen.codegen.generate_header_classes(install_dir)
     c_gen.codegen.generate_lists(install_dir)