(cvs shuffling, noted in earlier commit)
svn path=/trunk/gtk-sharp/; revision=6820
This commit is contained in:
parent
e9d1e0b6dc
commit
08d136d203
5 changed files with 0 additions and 2450 deletions
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<metadata>
|
|
||||||
|
|
||||||
<!-- renames -->
|
|
||||||
<rule>
|
|
||||||
<class name="AtkDocument">
|
|
||||||
<method>GetDocument</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>name</name>
|
|
||||||
<value>GetTheDocument</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="AtkDocument">
|
|
||||||
<method>SetDocument</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>name</name>
|
|
||||||
<value>SetTheDocument</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
</metadata>
|
|
|
@ -1,110 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<metadata>
|
|
||||||
|
|
||||||
<!-- constructor collision hints -->
|
|
||||||
<rule>
|
|
||||||
<class name="GdkPixbuf">
|
|
||||||
<constructor>gdk_pixbuf_new_from_file</constructor>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>preferred</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- array hints -->
|
|
||||||
<rule>
|
|
||||||
<class name="GdkPixbufLoader">
|
|
||||||
<method>Write</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">const-guchar*</filter>
|
|
||||||
<name>array</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- null args -->
|
|
||||||
<rule>
|
|
||||||
<class name="GdkPixmap">
|
|
||||||
<constructor>gdk_pixmap_new</constructor>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">GdkWindow*</filter>
|
|
||||||
<name>null_ok</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- API hacks -->
|
|
||||||
<rule>
|
|
||||||
<class name="GdkBitmap"/>
|
|
||||||
<class name="GdkPixmap"/>
|
|
||||||
<class name="GdkWindow"/>
|
|
||||||
<data>
|
|
||||||
<attribute target="class">
|
|
||||||
<name>parent</name>
|
|
||||||
<value>GdkDrawable</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GdkPixmapObject"/>
|
|
||||||
<class name="GdkWindowObject"/>
|
|
||||||
<data>
|
|
||||||
<attribute target="class">
|
|
||||||
<delete/>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GdkPixbuf">
|
|
||||||
<method>RenderThresholdAlpha</method>
|
|
||||||
<method>RenderToDrawable</method>
|
|
||||||
<method>RenderToDrawableAlpha</method>
|
|
||||||
<method>RenderPixmapAndMaskForColormap</method>
|
|
||||||
<method>RenderPixmapAndMask</method>
|
|
||||||
<method>GetFromDrawable</method>
|
|
||||||
<method>GetFromImage</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>library</name>
|
|
||||||
<value>gdk-x11-2.0</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- out parameters -->
|
|
||||||
<rule>
|
|
||||||
<class name="GdkWindow">
|
|
||||||
<method>GetPointer</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">gint*</filter>
|
|
||||||
<name>pass_as</name>
|
|
||||||
<value>out</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GdkWindow">
|
|
||||||
<method>GetPointer</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">GdkModifierType*</filter>
|
|
||||||
<name>pass_as</name>
|
|
||||||
<value>out</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
</metadata>
|
|
|
@ -1,229 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<metadata>
|
|
||||||
|
|
||||||
<!-- renames -->
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeAppBar">
|
|
||||||
<signal>ClearPrompt</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>PromptCleared</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeClient">
|
|
||||||
<signal>Connect</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>Connected</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeClient">
|
|
||||||
<signal>Disconnect</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>Disconnected</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeDruidPage">
|
|
||||||
<signal>Back</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>BackClicked</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeDruidPage">
|
|
||||||
<signal>Finish</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>FinishClicked</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeDruidPage">
|
|
||||||
<signal>Cancel</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>CancelClicked</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeDruidPage">
|
|
||||||
<signal>Next</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>NextClicked</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeDruidPage">
|
|
||||||
<signal>Prepare</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>Prepared</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeIconList">
|
|
||||||
<signal>FocusIcon</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>IconFocused</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeEntry">
|
|
||||||
<method>GtkEntry</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>name</name>
|
|
||||||
<value>GetGtkEntry</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeEntry">
|
|
||||||
<signal>Activate</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>Activated</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeIconList">
|
|
||||||
<signal>SelectIcon</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>IconSelected</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeIconList">
|
|
||||||
<signal>UnselectIcon</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>IconUnselected</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeFileEntry">
|
|
||||||
<signal>Activate</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>Activated</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeCanvasItem">
|
|
||||||
<signal>Event</signal>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="signal">
|
|
||||||
<name>name</name>
|
|
||||||
<value>CanvasEvent</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- hides -->
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeFileEntry">
|
|
||||||
<method>GnomeEntry</method>
|
|
||||||
<method>GtkEntry</method>
|
|
||||||
</class>
|
|
||||||
<class name="GnomeIconEntry">
|
|
||||||
<method>PickDialog</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="method">
|
|
||||||
<name>hidden</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- misc -->
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeAbout">
|
|
||||||
<constructor>gnome_about_new</constructor>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">const-gchar**</filter>
|
|
||||||
<name>array</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- null args -->
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeIconList">
|
|
||||||
<constructor>gnome_icon_list_new</constructor>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">GtkAdjustment*</filter>
|
|
||||||
<name>null_ok</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
<rule>
|
|
||||||
<class name="GnomeIconList">
|
|
||||||
<method>gnome_icon_list_set_hadjustment</method>
|
|
||||||
<method>gnome_icon_list_set_vadjustment</method>
|
|
||||||
</class>
|
|
||||||
<data>
|
|
||||||
<attribute target="param">
|
|
||||||
<filter level="type">GtkAdjustment*</filter>
|
|
||||||
<name>null_ok</name>
|
|
||||||
<value>1</value>
|
|
||||||
</attribute>
|
|
||||||
</data>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
</metadata>
|
|
1805
parser/Gtk.metadata
1805
parser/Gtk.metadata
File diff suppressed because it is too large
Load diff
|
@ -1,278 +0,0 @@
|
||||||
#
|
|
||||||
# Metadata.pm: Adds additional properties to a GApi tree.
|
|
||||||
#
|
|
||||||
# Author: Rachel Hestilow <hestilow@ximian.com>
|
|
||||||
#
|
|
||||||
# <c> 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 @attrs = $node->attributes;
|
|
||||||
my $class_name = $attrs[0]->value;
|
|
||||||
${$classes}{$class_name} = [\%methods, \%signals];
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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");
|
|
||||||
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];
|
|
||||||
|
|
||||||
if ({%$classes_ref}->{$class}) {
|
|
||||||
addClassData ($doc, $node, $class, $data_list_ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
next if not ($methods_ref or $signals_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
Loading…
Add table
Reference in a new issue