Add g-ir-generate. Support $(DEBUG) Do immediate close tags if no
authorColin Walters <walters@verbum.org>
Fri, 22 Aug 2008 14:43:41 +0000 (14:43 +0000)
committerColin Walters <walters@src.gnome.org>
Fri, 22 Aug 2008 14:43:41 +0000 (14:43 +0000)
2008-08-22  Colin Walters  <walters@verbum.org>

* gobject-introspection-1.0.pc.in: Add g-ir-generate.
* tests/Makefile.am: Support $(DEBUG)
* tools/generate.c: Do immediate close tags if no
sub-elements.

svn path=/trunk/; revision=448

ChangeLog
gobject-introspection-1.0.pc.in
tests/Makefile.am
tests/boxed.gir
tools/generate.c

index 58d446d..c9ea6c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-22  Colin Walters  <walters@verbum.org>
+
+       * gobject-introspection-1.0.pc.in: Add g-ir-generate.
+       * tests/Makefile.am: Support $(DEBUG)
+       * tools/generate.c: Do immediate close tags if no
+       sub-elements.
+
 2008-08-21  Colin Walters  <walters@verbum.org>
 
        * tests/scanner/drawable-expected.gir,
index 2f9c187..6c7b9d3 100644 (file)
@@ -6,12 +6,9 @@ includedir=@includedir@
 
 g_ir_scanner=${bindir}/g-ir-scanner
 g_ir_compiler=${bindir}/g-ir-compiler
+g_ir_generate=${bindir}/g-ir-generate
 girdir=${prefix}/share/gir
 
-# FIXME: These needs to be ported to the GIR format first
-# g_idl_generator=${bindir}/g-idl-generator
-# g_idl_compiler=${bindir}/g-idl-compiler
-
 Cflags: -I${includedir}/gobject-introspection-1.0
 Requires: glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0
 Libs: -L${libdir} -lgirepository
index d08b6a5..d690bab 100644 (file)
@@ -25,8 +25,8 @@ GIRTESTS =                    \
 
 %.gir.test: %.gir
        @echo Testing $<:
-       $(top_builddir)/tools/g-ir-compiler --raw $< > $<.1; \
-       $(top_builddir)/tools/g-ir-generate --raw $<.1 > $<.2; \
+       $(DEBUG) $(top_builddir)/tools/g-ir-compiler --raw $< > $<.1; \
+       $(DEBUG) $(top_builddir)/tools/g-ir-generate --raw $<.1 > $<.2; \
        diff -u $< $<.2; rm $<.1 $<.2
 
 check-local: $(GIRTESTS)
index bf9278c..0184ec6 100644 (file)
@@ -60,7 +60,6 @@
         </parameter>
       </parameters>
     </function>
-    <glib:boxed glib:name="boxed2" glib:type-name="BoxedType2" glib:get-type="boxed2_get_type" deprecated="1">
-    </glib:boxed>
+    <glib:boxed glib:name="boxed2" glib:type-name="BoxedType2" glib:get-type="boxed2_get_type" deprecated="1"/>
   </namespace>
 </repository>
index 3e6a8f8..1f33157 100644 (file)
@@ -422,6 +422,7 @@ write_struct_info (const gchar  *namespace,
   const gchar *type_init;
   gboolean deprecated;
   gint i;
+  int n_elts;
 
   name = g_base_info_get_name ((GIBaseInfo *)info);
   deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
@@ -439,26 +440,34 @@ write_struct_info (const gchar  *namespace,
   if (deprecated)
     g_fprintf (file, " deprecated=\"1\"");
        
-  g_fprintf (file, ">\n");
-
-  for (i = 0; i < g_struct_info_get_n_fields (info); i++)
+  n_elts = g_struct_info_get_n_fields (info) + g_struct_info_get_n_methods (info);
+  if (n_elts > 0)
     {
-      GIFieldInfo *field = g_struct_info_get_field (info, i);
-      write_field_info (namespace, field, NULL, file);
-      g_base_info_unref ((GIBaseInfo *)field);
-    }
-
-  for (i = 0; i < g_struct_info_get_n_methods (info); i++)
+      g_fprintf (file, ">\n");
+      
+      for (i = 0; i < g_struct_info_get_n_fields (info); i++)
+       {
+         GIFieldInfo *field = g_struct_info_get_field (info, i);
+         write_field_info (namespace, field, NULL, file);
+         g_base_info_unref ((GIBaseInfo *)field);
+       }
+      
+      for (i = 0; i < g_struct_info_get_n_methods (info); i++)
+       {
+         GIFunctionInfo *function = g_struct_info_get_method (info, i);
+         write_function_info (namespace, function, file, 6);
+         g_base_info_unref ((GIBaseInfo *)function);
+       }
+      
+      if (g_base_info_get_type ((GIBaseInfo *)info) == GI_INFO_TYPE_BOXED)
+       g_fprintf (file, "    </glib:boxed>\n");
+      else
+       g_fprintf (file, "    </record>\n");
+    } 
+  else
     {
-      GIFunctionInfo *function = g_struct_info_get_method (info, i);
-      write_function_info (namespace, function, file, 6);
-      g_base_info_unref ((GIBaseInfo *)function);
+      g_fprintf (file, "/>\n");
     }
-
-  if (g_base_info_get_type ((GIBaseInfo *)info) == GI_INFO_TYPE_BOXED)
-    g_fprintf (file, "    </glib:boxed>\n");
-  else
-    g_fprintf (file, "    </record>\n");
 }
 
 static void