From 7a518421abe7e604e0ea96ce6234febb4a6b6216 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Tue, 25 May 2004 21:27:41 +0000 Subject: [PATCH] 2004-05-25 Mike Kestner * configure.in : don't expand the GAPI Makefile. * parser/Makefile.am : remove SUBDIRS. * parser/gapi2xml.pl : remove GAPI::Metadata usage. * parser/GAPI/* : kill. long live gapi-fixup. svn path=/trunk/gtk-sharp/; revision=28085 --- ChangeLog | 7 + configure.in | 1 - glib/TypeConverter.cs | 7 - parser/GAPI/Makefile.am | 4 - parser/GAPI/Metadata.pm | 300 ---------------------------------------- parser/Makefile.am | 2 - parser/gapi2xml.pl | 6 - 7 files changed, 7 insertions(+), 320 deletions(-) delete mode 100644 parser/GAPI/Makefile.am delete mode 100644 parser/GAPI/Metadata.pm diff --git a/ChangeLog b/ChangeLog index 6d39cd334..aea7b3f3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-25 Mike Kestner + + * configure.in : don't expand the GAPI Makefile. + * parser/Makefile.am : remove SUBDIRS. + * parser/gapi2xml.pl : remove GAPI::Metadata usage. + * parser/GAPI/* : kill. long live gapi-fixup. + 2004-05-25 Mike Kestner * gtk/Container.custom : use glue to invoke the GtkCallback in diff --git a/configure.in b/configure.in index 6655419cd..239e3d550 100644 --- a/configure.in +++ b/configure.in @@ -192,7 +192,6 @@ AC_SUBST(CFLAGS) AC_OUTPUT([ sources/Makefile parser/Makefile -parser/GAPI/Makefile generator/Makefile generator/gapi-codegen glib/Makefile diff --git a/glib/TypeConverter.cs b/glib/TypeConverter.cs index 1a0d27041..3ddbfcbd9 100644 --- a/glib/TypeConverter.cs +++ b/glib/TypeConverter.cs @@ -10,13 +10,6 @@ namespace GLibSharp { using System.Reflection; using GLib; - /// - /// Fundamental type converter - /// - /// - /// - /// Utilities for converting between TypeFundamentals and System.Type - /// public class TypeConverter { private TypeConverter () {} diff --git a/parser/GAPI/Makefile.am b/parser/GAPI/Makefile.am deleted file mode 100644 index 8411429ca..000000000 --- a/parser/GAPI/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -moduledir = $(datadir)/perl5/GAPI -module_SCRIPTS = Metadata.pm -EXTRA_DIST = Metadata.pm - diff --git a/parser/GAPI/Metadata.pm b/parser/GAPI/Metadata.pm deleted file mode 100644 index 17fa3c6f5..000000000 --- a/parser/GAPI/Metadata.pm +++ /dev/null @@ -1,300 +0,0 @@ -# -# Metadata.pm: Adds additional properties to a GApi tree. -# -# Author: Rachel Hestilow -# -# 2002 Rachel Hestilow -############################################################## - -package GAPI::Metadata; - -use XML::LibXML; - -sub new { - my $namespace = $_[1]; - my $file = "$namespace.metadata"; - my $self = {}; - @{$self->{rules}} = (); - $self->{metadata} = $namespace; - bless $self; - $self->load ($file); - return $self; -} - -sub parseClass { - my ($node, $classes) = @_; - my %methods = (); - my %signals = (); - my %members = (); - my @attrs = $node->attributes; - my $class_name = $attrs[0]->value; - ${$classes}{$class_name} = [\%methods, \%signals, \%members]; - - for ($method_node = $node->firstChild; $method_node != undef; $method_node = $method_node->nextSibling ()) { - if ($method_node->nodeName eq "method" or $method_node->nodeName eq "constructor") { - $methods{$method_node->firstChild->nodeValue} = 1; - } elsif ($method_node->nodeName eq "signal") { - $signals{$method_node->firstChild->nodeValue} = 1; - } elsif ($method_node->nodeName eq "property" or $method_node->nodeName eq "member") { - $members{$method_node->firstChild->nodeValue} = 1; - } - } -} - -sub parseData { - my $node = $_[0]; - my @data = (); - for ($data_node = $node->firstChild; $data_node != undef; $data_node = $data_node->nextSibling ()) { - next if $data_node->nodeName ne "attribute"; - my @attrs = $data_node->attributes; - my $target = $attrs[0]->value; - my ($filter_level, $filter_value, $attr_name, $attr_value); - my $directives = ""; - for ($attr_node = $data_node->firstChild; $attr_node != undef; $attr_node = $attr_node->nextSibling ()) { - if ($attr_node->nodeName eq "filter") { - my @filter_attrs = $attr_node->attributes; - $filter_level = $filter_attrs[0]->value; - $filter_value = $attr_node->firstChild->nodeValue; - } elsif ($attr_node->nodeName eq "name") { - $attr_name = $attr_node->firstChild->nodeValue; - } elsif ($attr_node->nodeName eq "value") { - $attr_value = $attr_node->firstChild->nodeValue; - } elsif ($attr_node->nodeName eq "delete") { - $directives = "delete"; - } - } - my @data_attr = ("attribute", $target, "filter", $filter_level, $filter_value, $attr_name, $attr_value, $directives); - push @data, \@data_attr; - } - - return @data; -} - -sub load { - my ($self, $file) = @_; - my $parser = new XML::LibXML; - my $doc = $parser->parse_file($file); - my $root = $doc->documentElement; - for ($rule_node = $root->firstChild; $rule_node != undef; $rule_node = $rule_node->nextSibling ()) { - next if $rule_node->nodeName ne "rule"; - my %classes = (); - my @data; - for ($node = $rule_node->firstChild; $node != undef; $node = $node->nextSibling ()) { - if ($node->nodeName eq "class") { - parseClass ($node, \%classes); - } elsif ($node->nodeName eq "data") { - @data = parseData ($node); - } - } - - push @{$self->{rules}}, [\%classes, \@data]; - } -} - -sub fixupParams { - my ($method_node, $data_list_ref) = @_; - my ($params_node, $node); - - foreach $data (@$data_list_ref) { - if ($$data[1] eq "method" or $$data[1] eq "signal") { - $method_node->setAttribute ($$data[5], $$data[6]); - next; - } - - for ($node = $method_node->firstChild; $node; $node = $node->nextSibling ()) { - if ($node->nodeName eq "parameters") { - $params_node = $node; - last; - } elsif ($node->nodeName eq "return-type" and $$data[1] eq "return") { - $node->setAttribute ($$data[5], $$data[6]); - last; - } - } - next if not $params_node; - if ($$data[1] eq "parameters") { - $params_node->setAttribute ($$data[5], $$data[6]); - next; - } - - - for ($node = $params_node->firstChild; $node; $node = $node->nextSibling ()) { - my $param_type; - my $param_name; - - foreach $attr ($node->attributes) { - if ($attr->name eq "type") { - $param_type = $attr->value; - } elsif ($attr->name eq "name") { - $param_name = $attr->value; - } - } - - if ($$data[3] eq "type") { - if ($param_type eq $$data[4]) { - $node->setAttribute ($$data[5], $$data[6]); - } - } elsif ($$data[3] eq "name") { - if ($param_name eq $$data[4]) { - $node->setAttribute ($$data[5], $$data[6]); - } - } - } - } -} - -sub myGetChildrenByTagName { - my ($node, $tagname) = @_; - my ($child); - my (@nodes) = (); - for ($child = $node->firstChild; $child; $child = $child->nextSibling ()) { - if ($child->nodeName eq $tagname) { - push @nodes, $child; - } - } - return @nodes; -} - -sub addClassData { - my ($doc, $node, $class, $data_list_ref) = @_; - - foreach $data (@$data_list_ref) { - if ($$data[1] eq "class") { - if ($$data[7] eq "delete") { - my $parent = $node->parentNode; - $parent->removeChild ($node); - return; - } - # my copy of XML::LibXML doesn't have this method. - #my @nodes = $node->getChildrenByTagName ($$data[5]); - my @nodes = myGetChildrenByTagName ($node, $$data[5]); - - if (0 == scalar @nodes) { - $node->setAttribute ($$data[5], $$data[6]); - } - next; - } - } -} - -sub fixupNamespace { - my ($self, $doc, $ns_node) = @_; - my $node; - foreach $rule (@{$self->{rules}}) { - my ($classes_ref, $data_list_ref) = @$rule; - for ($node = $ns_node->firstChild; $node; $node = $node->nextSibling ()) { - next if not ($node->nodeName eq "object" or $node->nodeName eq "interface" or $node->nodeName eq "struct" or $node->nodeName eq "boxed" or $node->nodeName eq "callback" or $node->nodeName eq "class" or $node->nodeName eq "enum"); - my $class, $methods_ref, $attr; - foreach $attr ($node->attributes) { - if ($attr->name eq "cname") { - $class = $attr->value; - last; - } - } - - my %classes = %$classes_ref; - $methods_ref = $classes{$class}[0]; - $signals_ref = $classes{$class}[1]; - $members_ref = $classes{$class}[2]; - - if ({%$classes_ref}->{$class}) { - addClassData ($doc, $node, $class, $data_list_ref); - } - - next if not ($methods_ref or $signals_ref or $members_ref); - - for ($method_node = $node->firstChild; $method_node; $method_node = $method_node->nextSibling ()) { - next if not ($method_node->nodeName eq "method" or $method_node->nodeName eq "constructor"); - my $method; - foreach $attr ($method_node->attributes) { - if (($attr->name eq "name" and $method_node->nodeName eq "method") or ($attr->name eq "cname" and $method_node->nodeName eq "constructor")) { - $method = $attr->value; - last; - } - } - next if not ${%$methods_ref}{$method}; - - fixupParams ($method_node, $data_list_ref); - } - - for ($signal_node = $node->firstChild; $signal_node; $signal_node = $signal_node->nextSibling ()) { - next if $signal_node->nodeName ne "signal"; - my $signal; - foreach $attr ($signal_node->attributes) { - if ($attr->name eq "name") { - $signal = $attr->value; - last; - } - } - next if not ${$signals_ref}{$signal}; - - fixupParams ($signal_node, $data_list_ref); - } - - for ($member_node = $node->firstChild; $member_node; $member_node = $member_node->nextSibling ()) { - next if $member_node->nodeName ne "property" and $member_node->nodeName ne "member"; - my $member; - foreach $attr ($member_node->attributes) { - if ($attr->name eq "name") { - $member = $attr->value; - last; - } - } - next if not ${$members_ref}{$member}; - - foreach $data (@$data_list_ref) { - if ($$data[1] eq "property" or $$data[1] eq "member") { - $member_node->setAttribute ($$data[5], $$data[6]); - next; - } - } - } - } - } -} - -sub fixup { - my $doc = $_[0]; - my ($api_node, $ns_node); - my $metadata = undef; - - $api_node = $doc->documentElement; - return if not ($api_node and $api_node->nodeName eq "api"); - for ($ns_node = $api_node->firstChild; $ns_node; $ns_node = $ns_node->nextSibling ()) { - next if $ns_node->nodeName ne "namespace"; - next if not $ns_node->attributes; - my @attrs = $ns_node->attributes; - next if not @attrs; - my $namespace = $attrs[0]->value; - if (-f "$namespace.metadata") { - if (not ($metadata and $metadata->{namespace} eq $namespace)) { - $metadata = new GAPI::Metadata ($namespace); - } - $metadata->fixupNamespace ($doc, $ns_node); - } - } -} - -sub output { - my $self = $_[0]; - $rule_num = 0; - foreach $rule (@{$self->{rules}}) { - print "Rule #$rule_num:\n"; - my ($classes_ref, $data_list_ref) = @$rule; - my %classes = %$classes_ref; - my @data_list = @$data_list_ref; - foreach $class (keys (%classes)) { - print "\tClass $class:\n"; - foreach $method (keys %{$classes{$class}}) { - print "\t\tMethod $method\n"; - } - } - print "\tData:\n"; - foreach $data (@data_list) { - printf "\t\tAdd an %s to all %s of %s %s: %s=%s\n", - $$data[0], $$data[1], $$data[3], $$data[4], $$data[5], $$data[6]; - } - $rule_num++; - } -} - -1; diff --git a/parser/Makefile.am b/parser/Makefile.am index b7fd93bdc..bc6405f34 100644 --- a/parser/Makefile.am +++ b/parser/Makefile.am @@ -1,5 +1,3 @@ -SUBDIRS = GAPI - assemblydir = $(bindir) pkgconfigdir = $(libdir)/pkgconfig assembly_DATA = gapi-fixup.exe diff --git a/parser/gapi2xml.pl b/parser/gapi2xml.pl index 104bb9d11..9838ca1f0 100755 --- a/parser/gapi2xml.pl +++ b/parser/gapi2xml.pl @@ -10,7 +10,6 @@ $debug=0; use XML::LibXML; -use GAPI::Metadata; if (!$ARGV[2]) { die "Usage: gapi_pp.pl | gapi2xml.pl \n"; @@ -413,11 +412,6 @@ foreach $define (sort (keys (%defines))) { $string_el->setAttribute('value', $defines{$define}); } -############################################################## -# Add metadata -############################################################## -GAPI::Metadata::fixup $doc; - ############################################################## # Output the tree ##############################################################