girepository/ginfo.c tools/generate.c
authorMark Doffman <mark.doffman@codethink.co.uk>
Mon, 10 Mar 2008 17:47:26 +0000 (17:47 +0000)
committerJohan Dahlin <johan@src.gnome.org>
Mon, 10 Mar 2008 17:47:26 +0000 (17:47 +0000)
2008-02-21  Mark Doffman  <mark.doffman@codethink.co.uk>

    * girepository/ginfo.c
    * tools/generate.c

    Change the way that external references with no namespace
    are dealt with. External references with no namespace
    are placed into the XML as-if they are a local reference.
    This is temporary, but helps with roundtrip tests.

WARNING: This commit does not compile. It is a partial change.

svn path=/trunk/; revision=134

girepository/ginfo.c
tools/generate.c

index d803dc66dfe0393f7d63325eec174edba43ab4e7..9349611419d625565fd0747610b9082325bb06b7 100644 (file)
@@ -161,29 +161,35 @@ g_info_from_entry (GMetadata *metadata,
 {
   GIBaseInfo *result;
   DirEntry *entry = g_metadata_get_dir_entry (metadata, index);
-  
+
   if (entry->local)
     result = g_info_new (entry->blob_type, NULL, metadata, entry->offset);
-  else 
+  else
     {
-      const gchar *namespace = g_metadata_get_string (metadata, entry->offset);
-      const gchar *name = g_metadata_get_string (metadata, entry->name);
-      
+      const gchar *namespace = NULL;
+      const gchar *name = NULL;
       GIRepository *repository = g_irepository_get_default ();
-      
+
+      namespace = g_metadata_get_string (metadata, entry->offset);
+      name = g_metadata_get_string (metadata, entry->name);
+
       result = g_irepository_find_by_name (repository, namespace, name);
       if (result == NULL)
        {
          GIUnresolvedInfo *unresolved;
-
          unresolved = g_new0 (GIUnresolvedInfo, 1);
-         
          unresolved->type = GI_INFO_TYPE_UNRESOLVED;
          unresolved->ref_count = 1;
          unresolved->container = NULL;
          unresolved->name = name;
-         unresolved->namespace = namespace;
-
+         if (entry->offset)
+           {
+             unresolved->namespace = namespace;
+           }
+         else
+           {
+             unresolved->namespace = NULL;
+           }
          result = (GIBaseInfo*)unresolved;
        }
     }
index 7c4569759bd79c0a20ddaeb9ab7912c4f6f6378c..0f6db6b0fad0fcf406ac3eaed0476ec612d73d39 100644 (file)
@@ -39,7 +39,8 @@ write_type_name (const gchar *namespace,
                 GIBaseInfo  *info,
                 FILE        *file)
 {
-  if (strcmp (namespace, g_base_info_get_namespace (info)) != 0)
+  if (g_base_info_get_namespace (info) != 0 &&
+      strcmp (namespace, g_base_info_get_namespace (info)) != 0)
     g_fprintf (file, "%s.", g_base_info_get_namespace (info));
 
   g_fprintf (file, "%s", g_base_info_get_name (info));