frontend: generate intermediate representation

This is converted to the legacy format by read_input.
diff --git a/loxigen.py b/loxigen.py
index 2096381..79e6da8 100755
--- a/loxigen.py
+++ b/loxigen.py
@@ -86,7 +86,7 @@
 import loxi_front_end.parser as parser
 import loxi_front_end.translation as translation
 import loxi_front_end.frontend as frontend
-
+from loxi_ir import *
 from generic_utils import *
 
 root_dir = os.path.dirname(os.path.realpath(__file__))
@@ -424,14 +424,27 @@
         # Populate global state
         for wire_version in ofinput.wire_versions:
             version_name = of_g.of_version_wire2name[wire_version]
-            versions[version_name]['classes'].update(copy.deepcopy(ofinput.classes))
-            of_g.ordered_classes[wire_version].extend(ofinput.ordered_classes)
 
-            for enum_name, members in ofinput.enums.items():
-                for member_name, value in members:
+            for ofclass in ofinput.classes:
+                of_g.ordered_classes[wire_version].append(ofclass.name)
+                legacy_members = []
+                pad_count = 0
+                for m in ofclass.members:
+                    if type(m) == OFPadMember:
+                        m_name = 'pad%d' % pad_count
+                        if m_name == 'pad0': m_name = 'pad'
+                        legacy_members.append(dict(m_type='uint8_t[%d]' % m.length,
+                                                   name=m_name))
+                        pad_count += 1
+                    else:
+                        legacy_members.append(dict(m_type=m.oftype, name=m.name))
+                versions[version_name]['classes'][ofclass.name] = legacy_members
+
+            for enum in ofinput.enums:
+                for name, value in enum.values:
                     identifiers.add_identifier(
-                        translation.loxi_name(member_name),
-                        member_name, enum_name, value, wire_version,
+                        translation.loxi_name(name),
+                        name, enum.name, value, wire_version,
                         of_g.identifiers, of_g.identifiers_by_group)
 
 def add_extra_classes():