gobject-introspection r123 - in trunk: . tests/parser tools



Author: malureau
Date: Sat Mar  8 22:48:30 2008
New Revision: 123
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=123&view=rev

Log:
2008-03-08  Marc-Andre Lureau  <marcandre lureau gmail com>

        * tools/gidlwriter.c (enum_generate): added "type-name",
        "get-type" and "deprecated" missing arguments.
        * tests/parser/Foo-expected.gidl:
        * tests/parser/foo-object.h: test enum type, and no type.


Modified:
   trunk/ChangeLog
   trunk/tests/parser/Foo-expected.gidl
   trunk/tests/parser/foo-object.h
   trunk/tools/gidlwriter.c

Modified: trunk/tests/parser/Foo-expected.gidl
==============================================================================
--- trunk/tests/parser/Foo-expected.gidl	(original)
+++ trunk/tests/parser/Foo-expected.gidl	Sat Mar  8 22:48:30 2008
@@ -15,12 +15,17 @@
 				<return-type type="FooBoxed*"/>
 			</constructor>
 		</boxed>
-		<enum name="FooEnumType">
+		<enum name="FooEnumNoType">
+			<member name="FOO_ENUM_UN" value="1"/>
+			<member name="FOO_ENUM_DEUX" value="2"/>
+			<member name="FOO_ENUM_TROIS" value="3"/>
+		</enum>
+		<enum name="FooEnumType" type-name="FooEnumType" get-type="foo_enum_get_type">
 			<member name="FOO_ENUM_ALPHA" value="0"/>
 			<member name="FOO_ENUM_BETA" value="1"/>
 			<member name="FOO_ENUM_DELTA" value="2"/>
 		</enum>
-		<flags name="FooFlagsType">
+		<flags name="FooFlagsType" type-name="FooFlagsType" get-type="foo_flags_get_type">
 			<member name="FOO_FLAGS_FIRST" value="1"/>
 			<member name="FOO_FLAGS_SECOND" value="2"/>
 			<member name="FOO_FLAGS_THIRD" value="4"/>

Modified: trunk/tests/parser/foo-object.h
==============================================================================
--- trunk/tests/parser/foo-object.h	(original)
+++ trunk/tests/parser/foo-object.h	Sat Mar  8 22:48:30 2008
@@ -77,6 +77,13 @@
   FOO_FLAGS_THIRD  = 1 << 2
 } FooFlagsType;
 
+typedef enum
+{
+  FOO_ENUM_UN = 1,
+  FOO_ENUM_DEUX = 2,
+  FOO_ENUM_TROIS = 3,
+} FooEnumNoType;
+
 GType foo_flags_get_type (void);
 
 typedef struct _FooBoxed FooBoxed;

Modified: trunk/tools/gidlwriter.c
==============================================================================
--- trunk/tools/gidlwriter.c	(original)
+++ trunk/tools/gidlwriter.c	Sat Mar  8 22:48:30 2008
@@ -123,7 +123,7 @@
   const char *tag_name;
   GString *markup_s;
   gchar *markup;
-  
+
   if (node->node.type == G_IDL_NODE_CALLBACK)
     tag_name = "callback";
   else if (node->is_constructor)
@@ -146,7 +146,7 @@
     g_string_append_printf (markup_s, " deprecated=\"1\"");
 
   g_string_append (markup_s, ">\n");
-  
+
   g_writer_write_indent (writer, markup_s->str);
   g_string_free (markup_s, TRUE);
 
@@ -370,6 +370,7 @@
 enum_generate (GIdlWriter * writer, GIdlNodeEnum * node)
 {
   GList *l;
+  GString *markup_s;
   char *markup;
   const char *tag_name = NULL;
 
@@ -381,10 +382,27 @@
     {
       tag_name = "flags";
     }
-  markup =
-    g_markup_printf_escaped ("<%s name=\"%s\">\n", tag_name, node->node.name);
-  g_writer_write_indent (writer, markup);
-  g_free (markup);
+
+  markup_s = g_string_new ("<");
+  g_string_append_printf (markup_s,
+			  "%s name=\"%s\"",
+			  tag_name, node->node.name);
+
+  if (node->gtype_name != NULL)
+    g_string_append_printf (markup_s,
+			    g_markup_printf_escaped (" type-name=\"%s\"", node->gtype_name));
+
+  if (node->gtype_init != NULL)
+    g_string_append_printf (markup_s,
+			    g_markup_printf_escaped (" get-type=\"%s\"", node->gtype_init));
+
+  if (node->deprecated)
+    g_string_append_printf (markup_s, " deprecated=\"1\"");
+
+  g_string_append (markup_s, ">\n");
+
+  g_writer_write_indent (writer, markup_s->str);
+  g_string_free (markup_s, TRUE);
 
   for (l = node->values; l != NULL; l = l->next)
     {
@@ -467,12 +485,12 @@
   GIdlWriter *writer;
 
   writer = g_new0 (GIdlWriter, 1);
-  
+
   if (!filename)
     writer->output = stdout;
   else
     writer->output = fopen (filename, "w");
-  
+
   g_writer_write (writer, "<?xml version=\"1.0\"?>\n");
   g_writer_write_indent (writer, "<api version=\"1.0\">\n");
   g_writer_write_module (writer, module);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]