loci: fix testing inheritance hierarchies with no non-virtual subclasses

The of_queue_stats_prop class in OF 1.4 is virtual but doesn't have any
non-virtual subclasses defined. This code was previously assuming a class could
be instantiated if it didn't have any subclasses.
diff --git a/c_gen/c_test_gen.py b/c_gen/c_test_gen.py
index 41fe122..74db717 100644
--- a/c_gen/c_test_gen.py
+++ b/c_gen/c_test_gen.py
@@ -773,13 +773,15 @@
     out.write("""
     %(base_type)s_t elt;
     int cur_len = 0;
+    (void) elt;
+    (void) cur_len;
 """ % dict(cls=cls, base_type=base_type))
 
     sub_classes =  type_maps.sub_class_map(base_type, version)
     sub_classes = [(instance, subcls) for (instance, subcls) in sub_classes if not type_maps.class_is_virtual(subcls)]
     v_name = loxi_utils.version_to_name(version)
 
-    if len(sub_classes) == 0:
+    if not type_maps.class_is_virtual(base_type):
         out.write("    /* No subclasses for %s */\n"% base_type)
         out.write("    %s_t *elt_p;\n" % base_type)
         out.write("\n    elt_p = &elt;\n")
@@ -791,7 +793,7 @@
         for instance, subcls in sub_classes:
             out.write("    %s = &elt.%s;\n" % (instance, instance))
 
-    if len(sub_classes) == 0: # No inheritance case
+    if not type_maps.class_is_virtual(base_type): # No inheritance case
         setup_instance(out, cls, base_type, "elt_p", v_name, version)
     else:
         for instance, subcls in sub_classes:
@@ -819,13 +821,14 @@
     base_type = loxi_utils.list_to_entry_type(cls)
     out.write("""
     %(base_type)s_t elt;
+    (void) elt;
 """ % dict(cls=cls, base_type=base_type))
 
     sub_classes =  type_maps.sub_class_map(base_type, version)
     sub_classes = [(instance, subcls) for (instance, subcls) in sub_classes if not type_maps.class_is_virtual(subcls)]
     v_name = loxi_utils.version_to_name(version)
 
-    if len(sub_classes) == 0:
+    if not type_maps.class_is_virtual(base_type):
         out.write("    /* No subclasses for %s */\n"% base_type)
         out.write("    %s_t *elt_p;\n" % base_type)
         out.write("\n    elt_p = &elt;\n")
@@ -837,8 +840,10 @@
         for instance, subcls in sub_classes:
             out.write("    %s = &elt.%s;\n" % (instance, instance))
 
-    out.write("    TEST_OK(%(cls)s_first(list, &elt));\n" % dict(cls=cls))
-    if len(sub_classes) == 0: # No inheritance case
+    if not type_maps.class_is_virtual(base_type) or sub_classes:
+        out.write("    TEST_OK(%(cls)s_first(list, &elt));\n" % dict(cls=cls))
+
+    if not type_maps.class_is_virtual(base_type): # No inheritance case
         check_instance(out, cls, base_type, "elt_p", v_name, version, True)
     else:
         count = 0
@@ -1173,13 +1178,15 @@
     out.write("""
     %(base_type)s_t elt;
     int cur_len = 0;
+    (void) elt;
+    (void) cur_len;
 """ % dict(cls=cls, base_type=base_type))
 
     sub_classes =  type_maps.sub_class_map(base_type, version)
     sub_classes = [(instance, subcls) for (instance, subcls) in sub_classes if not type_maps.class_is_virtual(subcls)]
     v_name = loxi_utils.version_to_name(version)
 
-    if len(sub_classes) == 0:
+    if not type_maps.class_is_virtual(base_type):
         out.write("    /* No subclasses for %s */\n"% base_type)
         out.write("    %s_t *elt_p;\n" % base_type)
         out.write("\n    elt_p = &elt;\n")
@@ -1191,7 +1198,7 @@
         for instance, subcls in sub_classes:
             out.write("    %s = &elt.%s;\n" % (instance, instance))
 
-    if len(sub_classes) == 0: # No inheritance case
+    if not type_maps.class_is_virtual(base_type): # No inheritance case
         setup_instance(out, cls, base_type, "elt_p", v_name, version)
     else:
         for instance, subcls in sub_classes:
@@ -1225,7 +1232,7 @@
     sub_classes = [(instance, subcls) for (instance, subcls) in sub_classes if not type_maps.class_is_virtual(subcls)]
     v_name = loxi_utils.version_to_name(version)
 
-    if len(sub_classes) == 0:
+    if not type_maps.class_is_virtual(base_type):
         entry_count = 2
         out.write("    /* No subclasses for %s */\n"% base_type)
         out.write("    %s_t *elt_p;\n" % base_type)
@@ -1239,8 +1246,10 @@
         for instance, subcls in sub_classes:
             out.write("    %s = &elt.%s;\n" % (instance, instance))
 
-    out.write("    TEST_OK(%(cls)s_first(list, &elt));\n" % dict(cls=cls))
-    if len(sub_classes) == 0: # No inheritance case
+    if not type_maps.class_is_virtual(base_type) or sub_classes:
+        out.write("    TEST_OK(%(cls)s_first(list, &elt));\n" % dict(cls=cls))
+
+    if not type_maps.class_is_virtual(base_type): # No inheritance case
         check_instance(out, cls, base_type, "elt_p", v_name,
                        version, True)
     else: