From 406320a945ad123df36ede165f34c58e0f8aac28 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Fri, 12 Dec 2003 22:36:52 +0000 Subject: [PATCH] 2003-12-12 Mike Kestner * gnome/gnome-api.xml : regen'd * parser/gapi2xml.pl : handle typedef enum _foo foo; * parser/gapi-parser : support elements in addition to and to specify the sources to be parsed. svn path=/trunk/gtk-sharp/; revision=21081 --- ChangeLog | 7 +++++++ gnome/gnome-api.xml | 4 +--- parser/gapi-parser | 24 +++++++++++++++++++----- parser/gapi2xml.pl | 5 ++++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index cba850d09..ee02893de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-12-12 Mike Kestner + + * gnome/gnome-api.xml : regen'd + * parser/gapi2xml.pl : handle typedef enum _foo foo; + * parser/gapi-parser : support elements in addition to + and to specify the sources to be parsed. + 2003-12-12 Radek Doulik * gtk/Gtk.metadata: hide TextTag.Weight property and implement it diff --git a/gnome/gnome-api.xml b/gnome/gnome-api.xml index 6269a0e90..ff4c764ca 100644 --- a/gnome/gnome-api.xml +++ b/gnome/gnome-api.xml @@ -6606,9 +6606,6 @@ - - - @@ -6703,5 +6700,6 @@ + \ No newline at end of file diff --git a/parser/gapi-parser b/parser/gapi-parser index 403ed1613..13963f7c8 100755 --- a/parser/gapi-parser +++ b/parser/gapi-parser @@ -49,24 +49,38 @@ for ($apinode = $root->firstChild; $apinode; $apinode = $apinode->nextSibling () } my @files = (); + my @realfiles = (); + my %excludes = (); for ($srcnode = $nsnode->firstChild; $srcnode; $srcnode = $srcnode->nextSibling ()) { - next if ($srcnode->nodeName ne "dir" && $srcnode->nodeName ne "file"); + next if ($srcnode->nodeName ne "dir" && $srcnode->nodeName ne "file" && $srcnode->nodeName ne "exclude"); if ($srcnode->nodeName eq "dir") { my ($dir); $dir = $srcnode->firstChild->nodeValue; - print "$dir\n"; - system ("gapi_pp.pl $dir | gapi2xml.pl $ns $outfile.pre $lib"); + print " "; + @files = (@files, `ls $dir/*.c`); + @files = (@files, `ls $dir/*.h`); } elsif ($srcnode->nodeName eq "file") { + $incfile = $srcnode->firstChild->nodeValue; + print " "; @files = (@files, $srcnode->firstChild->nodeValue); + } elsif ($srcnode->nodeName eq "exclude") { + $excfile = $srcnode->firstChild->nodeValue; + print " "; + $excludes{$srcnode->firstChild->nodeValue} = 1; } else { die "Unexpected source $srcnode->nodeName \n"; } } + print "\n"; if ($#files >= 0) { - $pp_args = join (" ", @files); - print "$pp_args\n"; + foreach $file (@files) { + chomp ($file); + @realfiles = (@realfiles, $file) if (!exists($excludes{$file})); + } + + $pp_args = join (" ", @realfiles); system ("gapi_pp.pl $pp_args | gapi2xml.pl $ns $outfile.pre $lib"); } } diff --git a/parser/gapi2xml.pl b/parser/gapi2xml.pl index 7d35dcfd2..39cdb4898 100755 --- a/parser/gapi2xml.pl +++ b/parser/gapi2xml.pl @@ -57,6 +57,8 @@ while ($line = ) { $types{$2} = $1; } elsif ($line =~ /typedef\s+(\w+)\s+(\**)(\w+);/) { $types{$3} = $1 . $2; + } elsif ($line =~ /typedef\s+enum\s+(\w+)\s+(\w+);/) { + $etypes{$1} = $2; } elsif ($line =~ /(typedef\s+)?\benum\b/) { $edef = $line; while ($line = ) { @@ -167,9 +169,10 @@ while ($line = ) { foreach $cname (sort(keys(%edefs))) { $ecnt++; + $def = $edefs{$cname}; + $cname = $etypes{$cname} if (exists($etypes{$cname})); $enums{lc($cname)} = $cname; $enum_elem = addNameElem($ns_elem, 'enum', $cname, $ns); - $def = $edefs{$cname}; if ($def =~ /=\s*1\s*<<\s*\d+/) { $enum_elem->setAttribute('type', "flags"); } else {