summaryrefslogtreecommitdiff
path: root/gtkdoc-scangobj.in
diff options
context:
space:
mode:
authorStefan Sauer <ensonic@users.sf.net>2015-06-17 10:08:51 +0200
committerStefan Sauer <ensonic@users.sf.net>2015-06-17 10:08:51 +0200
commit0918a071fec77127b8f4ad3d48d281e6963924b9 (patch)
tree359ae0ca6e8589b56c01493f51370e0230bd9f38 /gtkdoc-scangobj.in
parent94e65d44e2ecf6e5f1cedda5a960ecf9b5ca420a (diff)
downloadgtk-doc-0918a071fec77127b8f4ad3d48d281e6963924b9.tar.gz
gtkdoc-scangobj: cleanup the scanner code
Extract some code, so that we need less breaks in the here doc.
Diffstat (limited to 'gtkdoc-scangobj.in')
-rw-r--r--gtkdoc-scangobj.in30
1 files changed, 11 insertions, 19 deletions
diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in
index 6806f4c..423bd7b 100644
--- a/gtkdoc-scangobj.in
+++ b/gtkdoc-scangobj.in
@@ -125,7 +125,9 @@ my $new_args_filename = "$OUTPUT_DIR/$MODULE.args.new";
# generate a C program to scan the types
my $includes = "";
-my @types = ();
+my $forward_decls = "";
+my $get_types = "";
+my $ntypes = 1;
for (<TYPES>) {
if (/^#include/) {
@@ -139,12 +141,12 @@ for (<TYPES>) {
next;
} else {
chomp;
- push @types, $_;
+ $get_types .= " object_types[i++] = $_ ();\n";
+ $forward_decls .= "extern GType $_ (void);\n";
+ $ntypes++;
}
}
-my $ntypes = @types + 1;
-
print OUTPUT <<EOT;
#include <string.h>
#include <stdlib.h>
@@ -157,9 +159,7 @@ EOT
if ($includes) {
print OUTPUT $includes;
} else {
- for (@types) {
- print OUTPUT "extern GType $_ (void);\n";
- }
+ print OUTPUT $forward_decls;
}
if ($QUERY_CHILD_PROPERTIES) {
@@ -173,21 +173,16 @@ print OUTPUT <<EOT;
#ifdef GTK_IS_WIDGET_CLASS
#include <gtk/gtk.h>
#endif
-GType object_types[$ntypes];
+static GType object_types[$ntypes];
static GType *
get_object_types (void)
{
gpointer g_object_class;
gint i = 0;
-EOT
-
-for (@types) {
- print OUTPUT " object_types[i++] = $_ ();\n";
-}
-
-print OUTPUT <<EOT;
- object_types[i] = 0;
+
+${get_types}
+ object_types[i] = G_TYPE_INVALID;
/* reference the GObjectClass to initialize the param spec pool
* potentially needed by interfaces. See http://bugs.gnome.org/571820 */
@@ -221,7 +216,6 @@ const gchar *interfaces_filename = "$new_interfaces_filename";
const gchar *prerequisites_filename = "$new_prerequisites_filename";
const gchar *args_filename = "$new_args_filename";
-
static void output_signals (void);
static void output_object_signals (FILE *fp,
GType object_type);
@@ -262,7 +256,6 @@ main (int argc, char *argv[])
return 0;
}
-
static void
output_signals (void)
{
@@ -316,7 +309,6 @@ output_object_signals (FILE *fp, GType object_type)
}
}
-
/* This outputs one signal. */
static void
output_object_signal (FILE *fp,