[gtk-doc] scangobj: figure out additional root types
- From: Stefan Kost <stefkost src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-doc] scangobj: figure out additional root types
- Date: Wed, 15 Dec 2010 08:20:32 +0000 (UTC)
commit 836f653025803ca8e26b2069f9b665debbd7c5eb
Author: Stefan Kost <ensonic users sf net>
Date: Thu Oct 28 04:01:06 2010 +0300
scangobj: figure out additional root types
Discover root types besides GObject and GInterface.
gtkdoc-scangobj.in | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in
index 7947f8d..789072e 100644
--- a/gtkdoc-scangobj.in
+++ b/gtkdoc-scangobj.in
@@ -521,7 +521,9 @@ static void
output_object_hierarchy (void)
{
FILE *fp;
- gint i;
+ gint i,j;
+ GType root, type;
+ GType root_types[$ntypes] = { G_TYPE_INVALID, };
fp = fopen (hierarchy_filename, "w");
if (fp == NULL)
@@ -533,18 +535,27 @@ output_object_hierarchy (void)
output_hierarchy (fp, G_TYPE_INTERFACE, 0);
for (i=0; object_types[i]; i++) {
- if (!g_type_parent (object_types[i]) &&
- (object_types[i] != G_TYPE_OBJECT) &&
- (object_types[i] != G_TYPE_INTERFACE)
- ) {
- output_hierarchy (fp, object_types[i], 0);
+ root = object_types[i];
+ while ((type = g_type_parent (root))) {
+ root = type;
+ }
+ if ((root != G_TYPE_OBJECT) && (root != G_TYPE_INTERFACE)) {
+ for (j=0; root_types[j]; j++) {
+ if (root == root_types[j]) {
+ root = G_TYPE_INVALID; break;
+ }
+ }
+ if(root) {
+ root_types[j] = root;
+ output_hierarchy (fp, root, 0);
+ }
}
}
fclose (fp);
}
-/* This is called recursively to output the hierarchy of a widget. */
+/* This is called recursively to output the hierarchy of a object. */
static void
output_hierarchy (FILE *fp,
GType type,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]