[glibmm/gmmproc-refactor] Regenerate handlers and move them one directory lower.
- From: Krzesimir Nowak <krnowak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm/gmmproc-refactor] Regenerate handlers and move them one directory lower.
- Date: Mon, 21 Nov 2011 12:05:11 +0000 (UTC)
commit 6a6711bc7355012a5c21f1819b3a9ebac00db579
Author: Krzesimir Nowak <qdlacz gmail com>
Date: Mon Nov 21 12:47:41 2011 +0100
Regenerate handlers and move them one directory lower.
No need for `Generated' directory/package name. Also, old subclasses
of generated files and some Ignore* modules are removed.
tools/pm/Gir/Handlers/Alias.pm | 125 +++++-
tools/pm/Gir/Handlers/Array.pm | 159 ++++++
.../Handlers/{Generated/Doc.pm => Attribute.pm} | 61 +--
tools/pm/Gir/Handlers/Bitfield.pm | 160 ++++++-
tools/pm/Gir/Handlers/{Ignore.pm => CInclude.pm} | 48 +-
tools/pm/Gir/Handlers/Callback.pm | 159 ++++++-
tools/pm/Gir/Handlers/Class.pm | 425 +++++++++++++++--
tools/pm/Gir/Handlers/Common/Base.pm | 150 ++++++
tools/pm/Gir/Handlers/Common/Misc.pm | 175 +++++++
.../pm/Gir/Handlers/{Ignore.pm => Common/State.pm} | 51 ++-
.../Gir/Handlers/{Generated => }/Common/Store.pm | 5 +-
.../pm/Gir/Handlers/{Generated => }/Common/Tags.pm | 248 ++++++----
tools/pm/Gir/Handlers/Constant.pm | 127 +++++-
tools/pm/Gir/Handlers/Constructor.pm | 193 ++++++++
tools/pm/Gir/Handlers/{Ignore.pm => Doc.pm} | 48 +-
tools/pm/Gir/Handlers/Enumeration.pm | 159 ++++++-
tools/pm/Gir/Handlers/Field.pm | 261 ++++++++++
tools/pm/Gir/Handlers/Function.pm | 159 ++++++-
tools/pm/Gir/Handlers/Generated/Alias.pm | 161 -------
tools/pm/Gir/Handlers/Generated/Array.pm | 118 -----
tools/pm/Gir/Handlers/Generated/Bitfield.pm | 161 -------
tools/pm/Gir/Handlers/Generated/CInclude.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Callback.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Class.pm | 505 --------------------
tools/pm/Gir/Handlers/Generated/Common/Base.pm | 179 -------
tools/pm/Gir/Handlers/Generated/Common/Misc.pm | 116 -----
tools/pm/Gir/Handlers/Generated/Constant.pm | 118 -----
tools/pm/Gir/Handlers/Generated/Constructor.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Enumeration.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Field.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Function.pm | 204 --------
tools/pm/Gir/Handlers/Generated/GlibSignal.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Implements.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Include.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Interface.pm | 376 ---------------
tools/pm/Gir/Handlers/Generated/Member.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Method.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Namespace.pm | 505 --------------------
tools/pm/Gir/Handlers/Generated/Package.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Parameter.pm | 247 ----------
tools/pm/Gir/Handlers/Generated/Parameters.pm | 118 -----
tools/pm/Gir/Handlers/Generated/Prerequisite.pm | 83 ----
tools/pm/Gir/Handlers/Generated/Property.pm | 204 --------
tools/pm/Gir/Handlers/Generated/Record.pm | 333 -------------
tools/pm/Gir/Handlers/Generated/Repository.pm | 247 ----------
tools/pm/Gir/Handlers/Generated/ReturnValue.pm | 204 --------
tools/pm/Gir/Handlers/Generated/TopLevel.pm | 118 -----
tools/pm/Gir/Handlers/Generated/Type.pm | 161 -------
tools/pm/Gir/Handlers/Generated/Union.pm | 333 -------------
tools/pm/Gir/Handlers/Generated/Varargs.pm | 83 ----
tools/pm/Gir/Handlers/Generated/VirtualMethod.pm | 204 --------
tools/pm/Gir/Handlers/GlibBoxed.pm | 227 +++++++++
tools/pm/Gir/Handlers/GlibSignal.pm | 193 ++++++++
tools/pm/Gir/Handlers/IgnoreStores.pm | 23 -
tools/pm/Gir/Handlers/{Ignore.pm => Implements.pm} | 48 +-
.../Handlers/{IgnoreStartStore.pm => Include.pm} | 44 ++-
tools/pm/Gir/Handlers/Interface.pm | 393 ++++++++++++++-
.../Gir/Handlers/{IgnoreEndStore.pm => Member.pm} | 44 ++-
tools/pm/Gir/Handlers/Method.pm | 193 ++++++++
tools/pm/Gir/Handlers/Namespace.pm | 377 ++++++++++++++-
tools/pm/Gir/Handlers/{Ignore.pm => Package.pm} | 48 +-
tools/pm/Gir/Handlers/Parameter.pm | 227 +++++++++
tools/pm/Gir/Handlers/Parameters.pm | 91 ++++
.../pm/Gir/Handlers/{Ignore.pm => Prerequisite.pm} | 48 +-
tools/pm/Gir/Handlers/Property.pm | 227 +++++++++
tools/pm/Gir/Handlers/Record.pm | 292 +++++++++++-
tools/pm/Gir/Handlers/Repository.pm | 168 ++++++--
tools/pm/Gir/Handlers/ReturnValue.pm | 227 +++++++++
tools/pm/Gir/Handlers/TopLevel.pm | 61 ++-
tools/pm/Gir/Handlers/Type.pm | 159 ++++++
tools/pm/Gir/Handlers/Union.pm | 292 +++++++++++-
tools/pm/Gir/Handlers/{Ignore.pm => Varargs.pm} | 48 +-
tools/pm/Gir/Handlers/VirtualMethod.pm | 193 ++++++++
73 files changed, 5708 insertions(+), 7045 deletions(-)
---
diff --git a/tools/pm/Gir/Handlers/Alias.pm b/tools/pm/Gir/Handlers/Alias.pm
index 555c622..1859291 100644
--- a/tools/pm/Gir/Handlers/Alias.pm
+++ b/tools/pm/Gir/Handlers/Alias.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,31 +22,108 @@ package Gir::Handlers::Alias;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Alias);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Type;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Type;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _type_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _setup_subhandlers ($)
+sub _type_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
}
##
@@ -54,12 +133,26 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Alias');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'type' => \&_type_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'type' => \&_type_end
});
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'type' => 'Gir::Handlers::Type'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Array.pm b/tools/pm/Gir/Handlers/Array.pm
new file mode 100644
index 0000000..2abba4e
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Array.pm
@@ -0,0 +1,159 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Array;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Array');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Doc.pm b/tools/pm/Gir/Handlers/Attribute.pm
similarity index 58%
rename from tools/pm/Gir/Handlers/Generated/Doc.pm
rename to tools/pm/Gir/Handlers/Attribute.pm
index 8afbcba..74ffb2c 100644
--- a/tools/pm/Gir/Handlers/Generated/Doc.pm
+++ b/tools/pm/Gir/Handlers/Attribute.pm
@@ -17,65 +17,46 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Generated::Doc;
+package Gir::Handlers::Attribute;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::Generated::Common::Store;
-use Gir::Handlers::Generated::Common::Tags;
-##
-## private virtuals
-##
-
-
-sub _setup_handlers ($)
-{
- my $self = shift;
-
- $self->_set_handlers
- (
- Gir::Handlers::Generated::Common::Store->new
- ({
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
- }),
- Gir::Handlers::Generated::Common::Store->new
- ({
- })
- );
-}
-
-sub _setup_subhandlers ($)
-{
- my $self = shift;
-
- $self->_set_subhandlers
- (
- $self->_generate_subhandlers
- ([
-
- ])
- );
-}
##
-## private (sort of)
+## private:
##
##
-## public
+## public:
##
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Doc');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Attribute');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Bitfield.pm b/tools/pm/Gir/Handlers/Bitfield.pm
index 44fa38c..50979ed 100644
--- a/tools/pm/Gir/Handlers/Bitfield.pm
+++ b/tools/pm/Gir/Handlers/Bitfield.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,32 +22,139 @@ package Gir::Handlers::Bitfield;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Bitfield);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Function;
+use Gir::Api::Member;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Function;
+use Gir::Handlers::Member;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _member_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _setup_subhandlers ($)
+sub _function_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
+}
+
+sub _member_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_member_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Member->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('member');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _member_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('member');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_member_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_member ($name, $object);
}
##
@@ -55,12 +164,29 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Bitfield');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'function' => \&_function_start,
+ 'member' => \&_member_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'function' => \&_function_end,
+ 'member' => \&_member_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'function' => 'Gir::Handlers::Function',
+ 'member' => 'Gir::Handlers::Member'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/CInclude.pm
similarity index 62%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/CInclude.pm
index c3a9d4c..79ab9d0 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/CInclude.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::CInclude;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::CInclude');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Callback.pm b/tools/pm/Gir/Handlers/Callback.pm
index 11fc43b..77258de 100644
--- a/tools/pm/Gir/Handlers/Callback.pm
+++ b/tools/pm/Gir/Handlers/Callback.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,37 +22,139 @@ package Gir::Handlers::Callback;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Callback);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _parameters_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _return_value_start_impl ($$$)
+sub _parameters_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
}
-sub _setup_subhandlers ($)
+sub _return_value_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
}
##
@@ -60,12 +164,29 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Callback');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Class.pm b/tools/pm/Gir/Handlers/Class.pm
index 9d9f009..1b2c7a8 100644
--- a/tools/pm/Gir/Handlers/Class.pm
+++ b/tools/pm/Gir/Handlers/Class.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,67 +22,387 @@ package Gir::Handlers::Class;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Class);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Constructor;
+use Gir::Api::Doc;
+use Gir::Api::Field;
+use Gir::Api::Function;
+use Gir::Api::GlibSignal;
+use Gir::Api::Implements;
+use Gir::Api::Method;
+use Gir::Api::Property;
+use Gir::Api::Record;
+use Gir::Api::Union;
+use Gir::Api::VirtualMethod;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Constructor;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Field;
+use Gir::Handlers::Function;
+use Gir::Handlers::GlibSignal;
+use Gir::Handlers::Implements;
+use Gir::Handlers::Method;
+use Gir::Handlers::Property;
+use Gir::Handlers::Record;
+use Gir::Handlers::Union;
+use Gir::Handlers::VirtualMethod;
##
## private:
##
-sub _constructor_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _doc_start_impl ($$$)
+sub _constructor_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_constructor_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Constructor->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('constructor');
}
-sub _field_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _function_start_impl ($$$)
+sub _field_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_field_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Field->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('field');
}
-sub _glib_signal_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _implements_start_impl ($$$)
+sub _glib_signal_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_glib_signal_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::GlibSignal->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('glib:signal');
}
-sub _method_start_impl ($$$)
+sub _implements_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_implements_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Implements->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('implements');
}
-sub _property_start_impl ($$$)
+sub _method_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Method->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('method');
}
-sub _virtual_method_start_impl ($$$)
+sub _property_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_property_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Property->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('property');
}
-sub _setup_subhandlers ($)
+sub _record_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_record_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Record->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('record');
+}
+
+sub _union_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_union_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Union->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('union');
+}
+
+sub _virtual_method_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_virtual_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::VirtualMethod->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('virtual-method');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _constructor_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('constructor');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_constructor_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_constructor ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _field_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('field');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_field_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_field ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _glib_signal_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('glib:signal');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_glib_signal_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_glib_signal ($name, $object);
+}
+
+sub _implements_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('implements');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_implements_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_implements ($name, $object);
+}
+
+sub _method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_method ($name, $object);
+}
+
+sub _property_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('property');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_property_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_property ($name, $object);
+}
+
+sub _record_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('record');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_record_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_record ($name, $object);
+}
+
+sub _union_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('union');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_union_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_union ($name, $object);
+}
+
+sub _virtual_method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('virtual-method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_virtual_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_virtual_method ($name, $object);
}
##
@@ -90,12 +412,53 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Class');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'constructor' => \&_constructor_start,
+ 'doc' => \&_doc_start,
+ 'field' => \&_field_start,
+ 'function' => \&_function_start,
+ 'glib:signal' => \&_glib_signal_start,
+ 'implements' => \&_implements_start,
+ 'method' => \&_method_start,
+ 'property' => \&_property_start,
+ 'record' => \&_record_start,
+ 'union' => \&_union_start,
+ 'virtual-method' => \&_virtual_method_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'constructor' => \&_constructor_end,
+ 'doc' => \&_doc_end,
+ 'field' => \&_field_end,
+ 'function' => \&_function_end,
+ 'glib:signal' => \&_glib_signal_end,
+ 'implements' => \&_implements_end,
+ 'method' => \&_method_end,
+ 'property' => \&_property_end,
+ 'record' => \&_record_end,
+ 'union' => \&_union_end,
+ 'virtual-method' => \&_virtual_method_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'constructor' => 'Gir::Handlers::Constructor',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'field' => 'Gir::Handlers::Field',
+ 'function' => 'Gir::Handlers::Function',
+ 'glib:signal' => 'Gir::Handlers::GlibSignal',
+ 'implements' => 'Gir::Handlers::Implements',
+ 'method' => 'Gir::Handlers::Method',
+ 'property' => 'Gir::Handlers::Property',
+ 'record' => 'Gir::Handlers::Record',
+ 'union' => 'Gir::Handlers::Union',
+ 'virtual-method' => 'Gir::Handlers::VirtualMethod'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Common/Base.pm b/tools/pm/Gir/Handlers/Common/Base.pm
new file mode 100644
index 0000000..36b9600
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Common/Base.pm
@@ -0,0 +1,150 @@
+# -*- mode: perl; perl-indent-level: 2; indent-tabs-mode: nil -*-
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Common::Base;
+
+use strict;
+use warnings;
+
+use Gir::Handlers::Common::Store;
+
+##
+## protected:
+##
+sub _call_hooks_general ($$$)
+{
+ my ($self, $tag_name, $hooks) = @_;
+
+ if (exists $hooks->{$tag_name})
+ {
+ my $tag_hooks = $hooks->{$tag_name};
+
+ foreach my $pair (@{$tag_hooks})
+ {
+ my $object = $pair->[0];
+ my $hook = $pair->[1];
+
+ if (defined $object)
+ {
+# print STDERR 'Calling method hook for `' . $tag_name . '\'.' . "\n";
+ $object->$hook;
+ }
+ else
+ {
+# print STDERR 'Calling function hook for `' . $tag_name . '\'.' . "\n";
+ &{$hook};
+ }
+ }
+ }
+}
+
+sub _call_start_hooks ($$)
+{
+ my ($self, $tag_name) = @_;
+ my $start_hooks = $self->{'start_hooks'};
+
+ $self->_call_hooks_general ($tag_name, $start_hooks);
+}
+
+sub _call_end_hooks ($$)
+{
+ my ($self, $tag_name) = @_;
+ my $end_hooks = $self->{'end_hooks'};
+
+ $self->_call_hooks_general ($tag_name, $end_hooks);
+}
+
+##
+## public:
+##
+sub new ($$$)
+{
+ my ($type, $start_store, $end_store, $subhandlers) = @_;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Common::Base');
+ my $self =
+ {
+ 'start_handlers' => $start_store,
+ 'end_handlers' => $end_store,
+ 'start_hooks' => {},
+ 'end_hooks' => {},
+ 'subhandlers' => $subhandlers
+ };
+
+ return bless ($self, $class);
+}
+
+sub install_start_hook ($$$$)
+{
+ my ($self, $tag_name, $object, $hook) = @_;
+ my $start_hooks = $self->{'start_hooks'};
+
+ unless (exists $start_hooks->{$tag_name})
+ {
+ $start_hooks->{$tag_name} = [];
+ }
+
+ my $tag_start_hooks = $start_hooks->{$tag_name};
+
+ push @{$tag_start_hooks}, [$object, $hook];
+}
+
+sub install_end_hook ($$$$)
+{
+ my ($self, $tag_name, $object, $hook) = @_;
+ my $end_hooks = $self->{'end_hooks'};
+
+ unless (exists $end_hooks->{$tag_name})
+ {
+ $end_hooks->{$tag_name} = [];
+ }
+
+ my $tag_end_hooks = $end_hooks->{$tag_name};
+
+ push @{$tag_end_hooks}, [$object, $hook];
+}
+
+sub get_start_handlers ($)
+{
+ my $self = shift;
+
+ return $self->{'start_handlers'};
+}
+
+sub get_end_handlers ($)
+{
+ my $self = shift;
+
+ return $self->{'end_handlers'};
+}
+
+sub get_subhandlers_for ($$)
+{
+ my ($self, $elem) = @_;
+ my $subhandlers = $self->{'subhandlers'};
+
+ if (exists ($subhandlers->{$elem}))
+ {
+ my $package = $subhandlers->{$elem};
+ my $instance = $package->new;
+
+ return $instance;
+ }
+ return undef;
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Common/Misc.pm b/tools/pm/Gir/Handlers/Common/Misc.pm
new file mode 100644
index 0000000..27a0e69
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Common/Misc.pm
@@ -0,0 +1,175 @@
+# -*- mode: perl; perl-indent-level: 2; indent-tabs-mode: nil -*-
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Common::Misc;
+
+use strict;
+use warnings;
+
+use Gir::Api::Common::Base;
+
+##
+## public:
+##
+
+##
+## Takes an array of mandatory-key->mandatory-value pairs, an array
+## of optional-key->default-value pairs and an array with names and values
+## returned by Expat parser and returns a hash with final key->value pairs. Note
+## that nonexistence of a key in atts_vals array that is specified in mandatory
+## keys array is fatal. Also is existence of a key that is specified in neither
+## mandatory keys array nor optional keys array. Also, if mandatory key has
+## a mandatory value specified then it is fatal when actual value differs from
+## it. If any optional key does not exist in atts_vals array then the one from
+## array of optional-key->default_value pairs is taken.
+##
+sub extract_values($$$)
+{
+ my ($keys, $optional_keys, $atts_vals) = @_;
+ my $params = {};
+ my %check = ();
+ my %leftovers = ();
+ my $leftover = undef;
+ my $att = undef;
+ my $check_value = 0;
+
+ foreach my $pair (@{$keys})
+ {
+ my $key = $pair->[0];
+
+ $params->{$key} = $pair->[1];
+ $check{$key} = undef;
+ }
+ foreach my $pair (@{$optional_keys})
+ {
+ $params->{$pair->[0]} = $pair->[1];
+ }
+
+ foreach my $entry (@{$atts_vals})
+ {
+ if (defined ($leftover))
+ {
+ $leftovers{$leftover} = $entry;
+ $leftover = undef;
+ }
+ elsif (not defined ($att))
+ {
+ if (exists ($params->{$entry}))
+ {
+ $att = $entry;
+ if (exists $check{$att})
+ {
+ delete ($check{$att});
+ $check_value = 1;
+ }
+ }
+ else
+ {
+ $leftover = $entry;
+ }
+ }
+ else
+ {
+ if ($check_value)
+ {
+ $check_value = 0;
+ unless (defined $params->{$att})
+ {
+ $params->{$att} = $entry;
+ }
+ elsif ($params->{$att} ne $entry)
+ {
+ print STDERR 'Expected value `' . $params->{$att} . '\' for `' . $att . '\', got `' . $entry . '\'.' . "\n";
+ exit 1;
+ }
+ }
+ else
+ {
+ $params->{$att} = $entry;
+ }
+ $att = undef;
+ }
+ }
+
+ my @check_keys = sort keys (%check);
+ my $message = '';
+
+ if (@check_keys > 0)
+ {
+ $message .= 'Missing attributes:' . "\n";
+
+ foreach my $key (@check_keys)
+ {
+ $message .= ' ' . $key . "\n";
+ }
+ }
+
+ my @leftover_keys = sort keys %leftovers;
+
+ if (@leftover_keys > 0)
+ {
+ $message .= 'Leftover attributes:' . "\n";
+
+ foreach $leftover (@leftover_keys)
+ {
+ $message .= " " . $leftover . " => " . $leftovers{$leftover} . "\n";
+ }
+ }
+
+ if ($message)
+ {
+ # TODO: throw an error.
+ print STDERR $message;
+ exit 1;
+ }
+
+ return $params;
+}
+
+##
+## Takes an object and its index in array. Tries to find out object's name.
+## If it fails, then it just generates a name using given index. This function
+## tries to use (if possible) an original type name - it prefers `GtkWidget'
+## over `Widget' or `gtk_widget_new' over `new'.
+##
+sub get_object_name ($$)
+{
+ my ($object, $index) = @_;
+ my @name_atts =
+ (
+ 'c:type',
+ 'c:identifier',
+ 'glib:type-name',
+ 'name',
+ 'glib:name'
+ );
+
+ foreach my $name (@name_atts)
+ {
+ if ($object->_has_attribute ($name))
+ {
+ my $object_name = $object->_get_attribute ($name);
+
+ return $object_name if (defined $object_name and $object_name ne '');
+ }
+ }
+
+ return ref ($object) . $index;
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Common/State.pm
similarity index 60%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/Common/State.pm
index c3a9d4c..118a237 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Common/State.pm
@@ -1,3 +1,4 @@
+# -*- mode: perl; perl-indent-level: 2; indent-tabs-mode: nil -*-
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,46 +16,50 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Common::State;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use Gir::Api::TopLevel;
-use Gir::Handlers::IgnoreStores;
+##
+## public:
+##
+sub new ($$$)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Common::State');
+ my $self =
+ {
+ 'object_stack' => [Gir::Api::TopLevel->new]
+ };
+
+ return bless ($self, $class);
+}
-sub _setup_handlers ($)
+sub push_object ($$)
{
- my $self = shift;
+ my ($self, $object) = @_;
+ my $object_stack = $self->{'object_stack'};
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
+ push (@{$object_stack}, $object);
}
-sub _setup_subhandlers ($)
+sub pop_object ($)
{
my $self = shift;
+ my $object_stack = $self->{'object_stack'};
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ pop (@{$object_stack});
}
-##
-## public:
-##
-sub new ($)
+sub get_current_object ($)
{
- my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $self = shift;
+ my $object_stack = $self->{'object_stack'};
- return bless ($self, $class);
+ return ${object_stack}->[-1];
}
1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Common/Store.pm b/tools/pm/Gir/Handlers/Common/Store.pm
similarity index 88%
rename from tools/pm/Gir/Handlers/Generated/Common/Store.pm
rename to tools/pm/Gir/Handlers/Common/Store.pm
index bad52a7..4a507c5 100644
--- a/tools/pm/Gir/Handlers/Generated/Common/Store.pm
+++ b/tools/pm/Gir/Handlers/Common/Store.pm
@@ -1,3 +1,4 @@
+# -*- mode: perl; perl-indent-level: 2; indent-tabs-mode: nil -*-
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,7 +16,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Generated::Common::Store;
+package Gir::Handlers::Common::Store;
use strict;
use warnings;
@@ -26,7 +27,7 @@ use warnings;
sub new ($$)
{
my ($type, $methods) = @_;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Stores::Store');
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Common::Store');
my $self =
{
'methods' => $methods
diff --git a/tools/pm/Gir/Handlers/Generated/Common/Tags.pm b/tools/pm/Gir/Handlers/Common/Tags.pm
similarity index 56%
rename from tools/pm/Gir/Handlers/Generated/Common/Tags.pm
rename to tools/pm/Gir/Handlers/Common/Tags.pm
index 8e885f6..ecdc3b4 100644
--- a/tools/pm/Gir/Handlers/Generated/Common/Tags.pm
+++ b/tools/pm/Gir/Handlers/Common/Tags.pm
@@ -17,23 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Generated::Common::Tags;
+package Gir::Handlers::Common::Tags;
use strict;
use warnings;
-use Gir::Handlers::Generated::Common::Misc;
+use Gir::Handlers::Common::Misc;
sub get_alias_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:type',
- 'name'
+ ['name', undef]
],
[
-
+ ['c:type', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
+ ['introspectable', 1]
],
\ _
);
@@ -42,7 +44,7 @@ sub get_alias_params (@)
sub get_array_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
@@ -52,7 +54,23 @@ sub get_array_params (@)
['fixed-size', undef],
['length', undef],
['name', undef],
- ['zero-terminated', undef]
+ ['zero-terminated', 1]
+ ],
+ \ _
+ );
+}
+
+
+sub get_attribute_params (@)
+{
+ return Gir::Handlers::Common::Misc::extract_values
+ (
+ [
+ ['name', undef],
+ ['value', undef]
+ ],
+ [
+
],
\ _
);
@@ -61,15 +79,18 @@ sub get_array_params (@)
sub get_bitfield_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:type',
- 'name'
+ ['c:type', undef],
+ ['name', undef]
],
[
+ ['deprecated', undef],
+ ['deprecated-version', undef],
['glib:get-type', undef],
['glib:type-name', undef],
+ ['introspectable', 1],
['version', undef]
],
\ _
@@ -79,10 +100,10 @@ sub get_bitfield_params (@)
sub get_c_include_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
@@ -94,13 +115,15 @@ sub get_c_include_params (@)
sub get_callback_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
['c:type', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
['introspectable', 1],
['throws', 0],
['version', undef]
@@ -112,19 +135,26 @@ sub get_callback_params (@)
sub get_class_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:symbol-prefix',
- 'glib:get-type',
- 'glib:type-name',
- 'name'
+ ['c:symbol-prefix', undef],
+ ['glib:type-name', undef],
+ ['name', undef]
],
[
['abstract', 0],
['c:type', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
['glib:fundamental', 0],
+ ['glib:get-type', undef],
+ ['glib:get-value-func', undef],
+ ['glib:ref-func', undef],
+ ['glib:set-value-func', undef],
['glib:type-struct', undef],
+ ['glib:unref-func', undef],
+ ['introspectable', 1],
['parent', undef],
['version', undef]
],
@@ -135,14 +165,15 @@ sub get_class_params (@)
sub get_constant_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name',
- 'value'
+ ['c:type', undef],
+ ['name', undef],
+ ['value', undef]
],
[
- ['c:type', undef]
+
],
\ _
);
@@ -151,16 +182,17 @@ sub get_constant_params (@)
sub get_constructor_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:identifier',
- 'name'
+ ['name', undef]
],
[
+ ['c:identifier', undef],
['deprecated', undef],
['deprecated-version', undef],
['introspectable', 1],
+ ['moved-to', undef],
['shadowed-by', undef],
['shadows', undef],
['throws', 0],
@@ -173,10 +205,10 @@ sub get_constructor_params (@)
sub get_doc_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'xml:whitespace'
+ ['xml:whitespace', 'preserve']
],
[
@@ -188,11 +220,11 @@ sub get_doc_params (@)
sub get_enumeration_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:type',
- 'name'
+ ['c:type', undef],
+ ['name', undef]
],
[
['deprecated', undef],
@@ -200,6 +232,7 @@ sub get_enumeration_params (@)
['glib:error-domain', undef],
['glib:get-type', undef],
['glib:type-name', undef],
+ ['introspectable', 1],
['version', undef]
],
\ _
@@ -209,13 +242,15 @@ sub get_enumeration_params (@)
sub get_field_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
['bits', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
['introspectable', 1],
['private', 0],
['readable', 1],
@@ -228,13 +263,13 @@ sub get_field_params (@)
sub get_function_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:identifier',
- 'name'
+ ['name', undef]
],
[
+ ['c:identifier', undef],
['deprecated', undef],
['deprecated-version', undef],
['introspectable', 1],
@@ -249,12 +284,29 @@ sub get_function_params (@)
}
+sub get_glib_boxed_params (@)
+{
+ return Gir::Handlers::Common::Misc::extract_values
+ (
+ [
+ ['glib:name', undef]
+ ],
+ [
+ ['c:symbol-prefix', undef],
+ ['glib:get-type', undef],
+ ['glib:type-name', undef]
+ ],
+ \ _
+ );
+}
+
+
sub get_glib_signal_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
['action', 0],
@@ -274,10 +326,10 @@ sub get_glib_signal_params (@)
sub get_implements_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
@@ -289,11 +341,11 @@ sub get_implements_params (@)
sub get_include_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name',
- 'version'
+ ['name', undef],
+ ['version', undef]
],
[
@@ -305,17 +357,20 @@ sub get_include_params (@)
sub get_interface_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:symbol-prefix',
- 'c:type',
- 'glib:get-type',
- 'glib:type-name',
- 'name'
+ ['c:symbol-prefix', undef],
+ ['glib:type-name', undef],
+ ['name', undef]
],
[
+ ['c:type', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
+ ['glib:get-type', undef],
['glib:type-struct', undef],
+ ['introspectable', 1],
['version', undef]
],
\ _
@@ -325,12 +380,12 @@ sub get_interface_params (@)
sub get_member_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:identifier',
- 'name',
- 'value'
+ ['c:identifier', undef],
+ ['name', undef],
+ ['value', undef]
],
[
['glib:nick', undef]
@@ -342,16 +397,17 @@ sub get_member_params (@)
sub get_method_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:identifier',
- 'name'
+ ['name', undef]
],
[
+ ['c:identifier', undef],
['deprecated', undef],
['deprecated-version', undef],
['introspectable', 1],
+ ['moved-to', undef],
['shadowed-by', undef],
['shadows', undef],
['throws', 0],
@@ -364,13 +420,13 @@ sub get_method_params (@)
sub get_namespace_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:identifier-prefixes',
- 'c:symbol-prefixes',
- 'name',
- 'version'
+ ['c:identifier-prefixes', undef],
+ ['c:symbol-prefixes', undef],
+ ['name', undef],
+ ['version', undef]
],
[
['shared-library', undef]
@@ -382,10 +438,10 @@ sub get_namespace_params (@)
sub get_package_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
@@ -397,19 +453,21 @@ sub get_package_params (@)
sub get_parameter_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'transfer-ownership'
+
],
[
['allow-none', 0],
- ['caller-allocates', undef],
+ ['caller-allocates', 0],
['closure', undef],
['destroy', undef],
- ['direction', undef],
+ ['direction', 'in'],
['name', undef],
- ['scope', undef]
+ ['scope', undef],
+ ['skip', 0],
+ ['transfer-ownership', undef]
],
\ _
);
@@ -418,7 +476,7 @@ sub get_parameter_params (@)
sub get_parameters_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
@@ -433,10 +491,10 @@ sub get_parameters_params (@)
sub get_prerequisite_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
@@ -448,11 +506,11 @@ sub get_prerequisite_params (@)
sub get_property_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name',
- 'transfer-ownership'
+ ['name', undef],
+ ['transfer-ownership', undef]
],
[
['construct', 0],
@@ -471,14 +529,14 @@ sub get_property_params (@)
sub get_record_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'c:type',
- 'name'
+
],
[
['c:symbol-prefix', undef],
+ ['c:type', undef],
['deprecated', undef],
['deprecated-version', undef],
['disguised', 0],
@@ -487,6 +545,7 @@ sub get_record_params (@)
['glib:is-gtype-struct-for', undef],
['glib:type-name', undef],
['introspectable', 1],
+ ['name', undef],
['version', undef]
],
\ _
@@ -496,15 +555,15 @@ sub get_record_params (@)
sub get_repository_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'version',
- 'xmlns',
- 'xmlns:c'
+ ['version', '1.2'],
+ ['xmlns', 'http://www.gtk.org/introspection/core/1.0'],
+ ['xmlns:c', 'http://www.gtk.org/introspection/c/1.0']
],
[
- ['xmlns:glib', undef]
+ ['xmlns:glib', 'http://www.gtk.org/introspection/glib/1.0']
],
\ _
);
@@ -513,12 +572,13 @@ sub get_repository_params (@)
sub get_return_value_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
],
[
+ ['skip', 0],
['transfer-ownership', undef]
],
\ _
@@ -528,13 +588,14 @@ sub get_return_value_params (@)
sub get_type_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
],
[
['c:type', undef],
+ ['foreign', 0],
['name', undef]
],
\ _
@@ -544,16 +605,21 @@ sub get_type_params (@)
sub get_union_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+
],
[
['c:symbol-prefix', undef],
['c:type', undef],
+ ['deprecated', undef],
+ ['deprecated-version', undef],
['glib:get-type', undef],
- ['glib:type-name', undef]
+ ['glib:type-name', undef],
+ ['introspectable', 1],
+ ['name', undef],
+ ['version', undef]
],
\ _
);
@@ -562,7 +628,7 @@ sub get_union_params (@)
sub get_varargs_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
@@ -577,10 +643,10 @@ sub get_varargs_params (@)
sub get_virtual_method_params (@)
{
- return Gir::Handlers::Generated::Common::Misc::extract_values
+ return Gir::Handlers::Common::Misc::extract_values
(
[
- 'name'
+ ['name', undef]
],
[
['deprecated', undef],
diff --git a/tools/pm/Gir/Handlers/Constant.pm b/tools/pm/Gir/Handlers/Constant.pm
index c2d7922..aaebedc 100644
--- a/tools/pm/Gir/Handlers/Constant.pm
+++ b/tools/pm/Gir/Handlers/Constant.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,27 +22,108 @@ package Gir::Handlers::Constant;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Constant);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Array;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
##
## private:
##
-sub _type_start_impl ($$$)
+sub _array_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
}
-sub _setup_subhandlers ($)
+sub _type_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
}
##
@@ -50,12 +133,26 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Constant');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
({
- 'type' => undef
+ 'array' => \&_array_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
});
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Constructor.pm b/tools/pm/Gir/Handlers/Constructor.pm
new file mode 100644
index 0000000..1363006
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Constructor.pm
@@ -0,0 +1,193 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Constructor;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
+
+##
+## private:
+##
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _parameters_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
+}
+
+sub _return_value_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Constructor');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Doc.pm
similarity index 63%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/Doc.pm
index c3a9d4c..bf838ea 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Doc.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Doc;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Doc');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Enumeration.pm b/tools/pm/Gir/Handlers/Enumeration.pm
index 46a174b..6c0088e 100644
--- a/tools/pm/Gir/Handlers/Enumeration.pm
+++ b/tools/pm/Gir/Handlers/Enumeration.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,37 +22,139 @@ package Gir::Handlers::Enumeration;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Enumeration);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Function;
+use Gir::Api::Member;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Function;
+use Gir::Handlers::Member;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _function_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _member_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _setup_subhandlers ($)
+sub _member_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_member_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Member->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('member');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _member_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('member');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_member_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_member ($name, $object);
}
##
@@ -60,12 +164,29 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Enumeration');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'function' => \&_function_start,
+ 'member' => \&_member_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'function' => \&_function_end,
+ 'member' => \&_member_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'function' => 'Gir::Handlers::Function',
+ 'member' => 'Gir::Handlers::Member'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Field.pm b/tools/pm/Gir/Handlers/Field.pm
new file mode 100644
index 0000000..70531a8
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Field.pm
@@ -0,0 +1,261 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Field;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Attribute;
+use Gir::Api::Callback;
+use Gir::Api::Doc;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Callback;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _callback_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_callback_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Callback->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('callback');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _callback_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('callback');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_callback_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_callback ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Field');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'attribute' => \&_attribute_start,
+ 'callback' => \&_callback_start,
+ 'doc' => \&_doc_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'attribute' => \&_attribute_end,
+ 'callback' => \&_callback_end,
+ 'doc' => \&_doc_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'callback' => 'Gir::Handlers::Callback',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Function.pm b/tools/pm/Gir/Handlers/Function.pm
index 101f962..1cbefe5 100644
--- a/tools/pm/Gir/Handlers/Function.pm
+++ b/tools/pm/Gir/Handlers/Function.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,37 +22,139 @@ package Gir::Handlers::Function;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Function);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _parameters_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _return_value_start_impl ($$$)
+sub _parameters_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
}
-sub _setup_subhandlers ($)
+sub _return_value_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
}
##
@@ -60,12 +164,29 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Function');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/GlibBoxed.pm b/tools/pm/Gir/Handlers/GlibBoxed.pm
new file mode 100644
index 0000000..bde3fef
--- /dev/null
+++ b/tools/pm/Gir/Handlers/GlibBoxed.pm
@@ -0,0 +1,227 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::GlibBoxed;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Constructor;
+use Gir::Api::Doc;
+use Gir::Api::Function;
+use Gir::Api::Method;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Constructor;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Function;
+use Gir::Handlers::Method;
+
+##
+## private:
+##
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _constructor_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_constructor_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Constructor->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('constructor');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _function_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
+}
+
+sub _method_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Method->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('method');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _constructor_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('constructor');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_constructor_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_constructor ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_method ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::GlibBoxed');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'constructor' => \&_constructor_start,
+ 'doc' => \&_doc_start,
+ 'function' => \&_function_start,
+ 'method' => \&_method_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'constructor' => \&_constructor_end,
+ 'doc' => \&_doc_end,
+ 'function' => \&_function_end,
+ 'method' => \&_method_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'constructor' => 'Gir::Handlers::Constructor',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'function' => 'Gir::Handlers::Function',
+ 'method' => 'Gir::Handlers::Method'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/GlibSignal.pm b/tools/pm/Gir/Handlers/GlibSignal.pm
new file mode 100644
index 0000000..43ced80
--- /dev/null
+++ b/tools/pm/Gir/Handlers/GlibSignal.pm
@@ -0,0 +1,193 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::GlibSignal;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
+
+##
+## private:
+##
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _parameters_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
+}
+
+sub _return_value_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::GlibSignal');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Implements.pm
similarity index 62%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/Implements.pm
index c3a9d4c..c0aa37a 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Implements.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Implements;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Implements');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/IgnoreStartStore.pm b/tools/pm/Gir/Handlers/Include.pm
similarity index 61%
rename from tools/pm/Gir/Handlers/IgnoreStartStore.pm
rename to tools/pm/Gir/Handlers/Include.pm
index 960d227..53e45d8 100644
--- a/tools/pm/Gir/Handlers/IgnoreStartStore.pm
+++ b/tools/pm/Gir/Handlers/Include.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,15 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::IgnoreStartStore;
+package Gir::Handlers::Include;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Store);
+use parent qw(Gir::Handlers::Common::Base);
+
+
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+
+
+##
+## private:
+##
-sub start_ignore ($$@)
-{}
##
## public:
@@ -31,20 +43,22 @@ sub start_ignore ($$@)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::IgnoreStartStore');
- my $self = $class->SUPER::new ({});
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Include');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
- return bless ($self, $class);
-}
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
-sub has_method_for ($$)
-{
- return 1;
-}
+ });
+ my $subhandlers =
+ {
-sub get_method_for ($$)
-{
- return \&start_ignore;
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
}
1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Interface.pm b/tools/pm/Gir/Handlers/Interface.pm
index f814273..4c89ad3 100644
--- a/tools/pm/Gir/Handlers/Interface.pm
+++ b/tools/pm/Gir/Handlers/Interface.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,57 +22,356 @@ package Gir::Handlers::Interface;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Interface);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Field;
+use Gir::Api::Function;
+use Gir::Api::GlibSignal;
+use Gir::Api::Method;
+use Gir::Api::Prerequisite;
+use Gir::Api::Property;
+use Gir::Api::Record;
+use Gir::Api::Union;
+use Gir::Api::VirtualMethod;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Field;
+use Gir::Handlers::Function;
+use Gir::Handlers::GlibSignal;
+use Gir::Handlers::Method;
+use Gir::Handlers::Prerequisite;
+use Gir::Handlers::Property;
+use Gir::Handlers::Record;
+use Gir::Handlers::Union;
+use Gir::Handlers::VirtualMethod;
##
## private:
##
-sub _doc_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _function_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _glib_signal_start_impl ($$$)
+sub _field_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_field_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Field->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('field');
}
-sub _method_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _prerequisite_start_impl ($$$)
+sub _glib_signal_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_glib_signal_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::GlibSignal->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('glib:signal');
}
-sub _property_start_impl ($$$)
+sub _method_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Method->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('method');
}
-sub _virtual_method_start_impl ($$$)
+sub _prerequisite_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_prerequisite_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Prerequisite->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('prerequisite');
}
-sub _setup_subhandlers ($)
+sub _property_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_property_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Property->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('property');
+}
+
+sub _record_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_record_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Record->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('record');
+}
+
+sub _union_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_union_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Union->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('union');
+}
+
+sub _virtual_method_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_virtual_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::VirtualMethod->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('virtual-method');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _field_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('field');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_field_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_field ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _glib_signal_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('glib:signal');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_glib_signal_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_glib_signal ($name, $object);
+}
+
+sub _method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_method ($name, $object);
+}
+
+sub _prerequisite_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('prerequisite');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_prerequisite_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_prerequisite ($name, $object);
+}
+
+sub _property_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('property');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_property_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_property ($name, $object);
+}
+
+sub _record_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('record');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_record_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_record ($name, $object);
+}
+
+sub _union_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('union');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_union_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_union ($name, $object);
+}
+
+sub _virtual_method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('virtual-method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_virtual_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_virtual_method ($name, $object);
}
##
@@ -80,12 +381,50 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Interface');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'field' => \&_field_start,
+ 'function' => \&_function_start,
+ 'glib:signal' => \&_glib_signal_start,
+ 'method' => \&_method_start,
+ 'prerequisite' => \&_prerequisite_start,
+ 'property' => \&_property_start,
+ 'record' => \&_record_start,
+ 'union' => \&_union_start,
+ 'virtual-method' => \&_virtual_method_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'field' => \&_field_end,
+ 'function' => \&_function_end,
+ 'glib:signal' => \&_glib_signal_end,
+ 'method' => \&_method_end,
+ 'prerequisite' => \&_prerequisite_end,
+ 'property' => \&_property_end,
+ 'record' => \&_record_end,
+ 'union' => \&_union_end,
+ 'virtual-method' => \&_virtual_method_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'field' => 'Gir::Handlers::Field',
+ 'function' => 'Gir::Handlers::Function',
+ 'glib:signal' => 'Gir::Handlers::GlibSignal',
+ 'method' => 'Gir::Handlers::Method',
+ 'prerequisite' => 'Gir::Handlers::Prerequisite',
+ 'property' => 'Gir::Handlers::Property',
+ 'record' => 'Gir::Handlers::Record',
+ 'union' => 'Gir::Handlers::Union',
+ 'virtual-method' => 'Gir::Handlers::VirtualMethod'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/IgnoreEndStore.pm b/tools/pm/Gir/Handlers/Member.pm
similarity index 61%
rename from tools/pm/Gir/Handlers/IgnoreEndStore.pm
rename to tools/pm/Gir/Handlers/Member.pm
index a2eedd9..0a5a849 100644
--- a/tools/pm/Gir/Handlers/IgnoreEndStore.pm
+++ b/tools/pm/Gir/Handlers/Member.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,15 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::IgnoreEndStore;
+package Gir::Handlers::Member;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Store);
+use parent qw(Gir::Handlers::Common::Base);
+
+
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+
+
+##
+## private:
+##
-sub end_ignore ($$)
-{}
##
## public:
@@ -31,20 +43,22 @@ sub end_ignore ($$)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::IgnoreEndStore');
- my $self = $class->SUPER::new ({});
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Member');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
- return bless ($self, $class);
-}
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
-sub has_method_for ($$)
-{
- return 1;
-}
+ });
+ my $subhandlers =
+ {
-sub get_method_for ($$)
-{
- return \&end_ignore;
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
}
1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Method.pm b/tools/pm/Gir/Handlers/Method.pm
new file mode 100644
index 0000000..9208560
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Method.pm
@@ -0,0 +1,193 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Method;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
+
+##
+## private:
+##
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _parameters_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
+}
+
+sub _return_value_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Method');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Namespace.pm b/tools/pm/Gir/Handlers/Namespace.pm
index e0364a0..1e0d2f2 100644
--- a/tools/pm/Gir/Handlers/Namespace.pm
+++ b/tools/pm/Gir/Handlers/Namespace.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,7 +22,23 @@ package Gir::Handlers::Namespace;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Namespace);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Alias;
+use Gir::Api::Bitfield;
+use Gir::Api::Callback;
+use Gir::Api::Class;
+use Gir::Api::Constant;
+use Gir::Api::Enumeration;
+use Gir::Api::Function;
+use Gir::Api::GlibBoxed;
+use Gir::Api::Interface;
+use Gir::Api::Record;
+use Gir::Api::Union;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
use Gir::Handlers::Alias;
use Gir::Handlers::Bitfield;
@@ -29,62 +47,331 @@ use Gir::Handlers::Class;
use Gir::Handlers::Constant;
use Gir::Handlers::Enumeration;
use Gir::Handlers::Function;
+use Gir::Handlers::GlibBoxed;
use Gir::Handlers::Interface;
use Gir::Handlers::Record;
use Gir::Handlers::Union;
-use Gir::Parser;
##
## private:
##
-sub _alias_start_impl ($$$)
+sub _alias_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_alias_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Alias->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('alias');
+}
+
+sub _bitfield_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_bitfield_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Bitfield->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('bitfield');
}
-sub _bitfield_start_impl ($$$)
+sub _callback_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_callback_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Callback->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('callback');
}
-sub _callback_start_impl ($$$)
+sub _class_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_class_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Class->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('class');
+}
+
+sub _constant_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_constant_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Constant->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('constant');
}
-sub _class_start_impl ($$$)
+sub _enumeration_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_enumeration_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Enumeration->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('enumeration');
}
-sub _constant_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _enumeration_start_impl ($$$)
+sub _glib_boxed_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_glib_boxed_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::GlibBoxed->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('glib:boxed');
}
-sub _function_start_impl ($$$)
+sub _interface_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_interface_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Interface->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('interface');
}
-sub _interface_start_impl ($$$)
+sub _record_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_record_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Record->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('record');
}
-sub _record_start_impl ($$$)
+sub _union_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_union_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Union->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('union');
}
-sub _union_start_impl ($$$)
+sub _alias_end ($$)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('alias');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_alias_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_alias ($name, $object);
+}
+
+sub _bitfield_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('bitfield');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_bitfield_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_bitfield ($name, $object);
+}
+
+sub _callback_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('callback');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_callback_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_callback ($name, $object);
+}
+
+sub _class_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('class');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_class_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_class ($name, $object);
+}
+
+sub _constant_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('constant');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_constant_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_constant ($name, $object);
+}
+
+sub _enumeration_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('enumeration');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_enumeration_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_enumeration ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _glib_boxed_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('glib:boxed');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_glib_boxed_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_glib_boxed ($name, $object);
+}
+
+sub _interface_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('interface');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_interface_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_interface ($name, $object);
+}
+
+sub _record_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('record');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_record_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_record ($name, $object);
+}
+
+sub _union_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('union');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_union_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_union ($name, $object);
}
##
@@ -94,12 +381,50 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Namespace');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'alias' => \&_alias_start,
+ 'bitfield' => \&_bitfield_start,
+ 'callback' => \&_callback_start,
+ 'class' => \&_class_start,
+ 'constant' => \&_constant_start,
+ 'enumeration' => \&_enumeration_start,
+ 'function' => \&_function_start,
+ 'glib:boxed' => \&_glib_boxed_start,
+ 'interface' => \&_interface_start,
+ 'record' => \&_record_start,
+ 'union' => \&_union_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'alias' => \&_alias_end,
+ 'bitfield' => \&_bitfield_end,
+ 'callback' => \&_callback_end,
+ 'class' => \&_class_end,
+ 'constant' => \&_constant_end,
+ 'enumeration' => \&_enumeration_end,
+ 'function' => \&_function_end,
+ 'glib:boxed' => \&_glib_boxed_end,
+ 'interface' => \&_interface_end,
+ 'record' => \&_record_end,
+ 'union' => \&_union_end
+ });
+ my $subhandlers =
+ {
+ 'alias' => 'Gir::Handlers::Alias',
+ 'bitfield' => 'Gir::Handlers::Bitfield',
+ 'callback' => 'Gir::Handlers::Callback',
+ 'class' => 'Gir::Handlers::Class',
+ 'constant' => 'Gir::Handlers::Constant',
+ 'enumeration' => 'Gir::Handlers::Enumeration',
+ 'function' => 'Gir::Handlers::Function',
+ 'glib:boxed' => 'Gir::Handlers::GlibBoxed',
+ 'interface' => 'Gir::Handlers::Interface',
+ 'record' => 'Gir::Handlers::Record',
+ 'union' => 'Gir::Handlers::Union'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Package.pm
similarity index 62%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/Package.pm
index c3a9d4c..4fbd2ad 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Package.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Package;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Package');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Parameter.pm b/tools/pm/Gir/Handlers/Parameter.pm
new file mode 100644
index 0000000..fc5ae36
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Parameter.pm
@@ -0,0 +1,227 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Parameter;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Parameter');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Parameters.pm b/tools/pm/Gir/Handlers/Parameters.pm
new file mode 100644
index 0000000..9592f5d
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Parameters.pm
@@ -0,0 +1,91 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Parameters;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Parameter;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Parameter;
+
+##
+## private:
+##
+sub _parameter_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameter_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameter->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameter');
+}
+
+sub _parameter_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameter');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameter_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameter ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Parameters');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'parameter' => \&_parameter_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'parameter' => \&_parameter_end
+ });
+ my $subhandlers =
+ {
+ 'parameter' => 'Gir::Handlers::Parameter'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Prerequisite.pm
similarity index 62%
copy from tools/pm/Gir/Handlers/Ignore.pm
copy to tools/pm/Gir/Handlers/Prerequisite.pm
index c3a9d4c..103d5a7 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Prerequisite.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Prerequisite;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Prerequisite');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Property.pm b/tools/pm/Gir/Handlers/Property.pm
new file mode 100644
index 0000000..6204547
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Property.pm
@@ -0,0 +1,227 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Property;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Property');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Record.pm b/tools/pm/Gir/Handlers/Record.pm
index ede22fb..9614937 100644
--- a/tools/pm/Gir/Handlers/Record.pm
+++ b/tools/pm/Gir/Handlers/Record.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,52 +22,263 @@ package Gir::Handlers::Record;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Record);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Constructor;
+use Gir::Api::Doc;
+use Gir::Api::Field;
+use Gir::Api::Function;
+use Gir::Api::Method;
+use Gir::Api::Record;
+use Gir::Api::Union;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Constructor;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Field;
+use Gir::Handlers::Function;
+use Gir::Handlers::Method;
+use Gir::Handlers::Record;
+use Gir::Handlers::Union;
##
## private:
##
-sub _constructor_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _doc_start_impl ($$$)
+sub _constructor_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_constructor_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Constructor->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('constructor');
}
-sub _field_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _function_start_impl ($$$)
+sub _field_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_field_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Field->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('field');
}
-sub _method_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _union_start_impl ($$$)
+sub _method_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Method->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('method');
}
-sub _setup_subhandlers ($)
+sub _record_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_record_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Record->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('record');
+}
+
+sub _union_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_union_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Union->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('union');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _constructor_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('constructor');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_constructor_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_constructor ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _field_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('field');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_field_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_field ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_method ($name, $object);
+}
+
+sub _record_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('record');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_record_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_record ($name, $object);
+}
+
+sub _union_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('union');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_union_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_union ($name, $object);
}
##
@@ -75,12 +288,41 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Record');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'constructor' => \&_constructor_start,
+ 'doc' => \&_doc_start,
+ 'field' => \&_field_start,
+ 'function' => \&_function_start,
+ 'method' => \&_method_start,
+ 'record' => \&_record_start,
+ 'union' => \&_union_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'constructor' => \&_constructor_end,
+ 'doc' => \&_doc_end,
+ 'field' => \&_field_end,
+ 'function' => \&_function_end,
+ 'method' => \&_method_end,
+ 'record' => \&_record_end,
+ 'union' => \&_union_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'constructor' => 'Gir::Handlers::Constructor',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'field' => 'Gir::Handlers::Field',
+ 'function' => 'Gir::Handlers::Function',
+ 'method' => 'Gir::Handlers::Method',
+ 'record' => 'Gir::Handlers::Record',
+ 'union' => 'Gir::Handlers::Union'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Repository.pm b/tools/pm/Gir/Handlers/Repository.pm
index 80436a5..9e269c1 100644
--- a/tools/pm/Gir/Handlers/Repository.pm
+++ b/tools/pm/Gir/Handlers/Repository.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,49 +22,139 @@ package Gir::Handlers::Repository;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Repository);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::CInclude;
+use Gir::Api::Include;
+use Gir::Api::Namespace;
+use Gir::Api::Package;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
+use Gir::Handlers::CInclude;
+use Gir::Handlers::Include;
use Gir::Handlers::Namespace;
-use Gir::Parser;
+use Gir::Handlers::Package;
##
## private:
##
-sub _include_start_impl ($$$)
+sub _c_include_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_c_include_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::CInclude->new_with_params ($params);
- $parser->parse_file ($params->{'name'} . '-' . $params->{'version'} . '.gir');
+ $state->push_object ($object);
+ $self->_call_start_hooks ('c:include');
}
-sub _namespace_start_impl ($$$)
+sub _include_start ($$@)
{
- my ($self, $parser, $params) = @_;
- my $api = $parser->get_api ();
- my $name = $params->{'name'};
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_include_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Include->new_with_params ($params);
- #if ($api->has_namespace ($name))
- #{
- # TODO: error? every gir probably should have different namespace, right?
- #}
- #$api->add_namespace ($name);
+ $state->push_object ($object);
+ $self->_call_start_hooks ('include');
+}
- my $state = $parser->get_current_state ();
+sub _namespace_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_namespace_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Namespace->new_with_params ($params);
- print STDOUT 'Parsing ' . $state->get_parsed_file () . "\n";
- $state->set_current_namespace ($name);
+ $state->push_object ($object);
+ $self->_call_start_hooks ('namespace');
}
-sub _setup_subhandlers ($)
+sub _package_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_package_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Package->new_with_params ($params);
- $self->_set_subhandlers
- ({
- 'namespace' => 'Gir::Handlers::Namespace',
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('package');
+}
+
+sub _c_include_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('c:include');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_c_include_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_c_include ($name, $object);
+}
+
+sub _include_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('include');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_include_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_include ($name, $object);
+}
+
+sub _namespace_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('namespace');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_namespace_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_namespace ($name, $object);
+}
+
+sub _package_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('package');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_package_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_package ($name, $object);
}
##
@@ -72,17 +164,29 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Repository');
- my $self = $class->SUPER::new ();
-
- $self->_set_start_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- 'c:include' => undef,
- 'package' => undef
+ 'c:include' => \&_c_include_start,
+ 'include' => \&_include_start,
+ 'namespace' => \&_namespace_start,
+ 'package' => \&_package_start
});
- $self->_set_end_ignores
+ my $end_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'c:include' => \&_c_include_end,
+ 'include' => \&_include_end,
+ 'namespace' => \&_namespace_end,
+ 'package' => \&_package_end
});
+ my $subhandlers =
+ {
+ 'c:include' => 'Gir::Handlers::CInclude',
+ 'include' => 'Gir::Handlers::Include',
+ 'namespace' => 'Gir::Handlers::Namespace',
+ 'package' => 'Gir::Handlers::Package'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/ReturnValue.pm b/tools/pm/Gir/Handlers/ReturnValue.pm
new file mode 100644
index 0000000..9011fad
--- /dev/null
+++ b/tools/pm/Gir/Handlers/ReturnValue.pm
@@ -0,0 +1,227 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::ReturnValue;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::ReturnValue');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/TopLevel.pm b/tools/pm/Gir/Handlers/TopLevel.pm
index fa4dacb..2b6b7e3 100644
--- a/tools/pm/Gir/Handlers/TopLevel.pm
+++ b/tools/pm/Gir/Handlers/TopLevel.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,19 +22,46 @@ package Gir::Handlers::TopLevel;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::TopLevel);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Repository;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
use Gir::Handlers::Repository;
##
## private:
##
-sub _gen_subhandlers ($$)
+sub _repository_start ($$@)
{
- my (undef, $tags) = @_;
- my %subhandlers = map { $_ => 'Gir::Handlers::' . Gir::Handlers::Generated::Common::Misc::module_from_tag ($_) } @{$tags};
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_repository_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Repository->new_with_params ($params);
- return \%subhandlers;
+ $state->push_object ($object);
+ $self->_call_start_hooks ('repository');
+}
+
+sub _repository_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('repository');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_repository_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_repository ($name, $object);
}
##
@@ -42,21 +71,21 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::TopLevel');
- my $self = $class->SUPER::new ();
-
- $self = bless ($self, $class);
- $self->_set_generator (\&_gen_subhandlers);
- $self->_setup_handlers ();
- $self->_setup_subhandlers ();
- $self->_set_start_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- 'repository' => undef
+ 'repository' => \&_repository_start
});
- $self->_set_end_ignores
+ my $end_store = Gir::Handlers::Common::Store->new
({
- 'repository' => undef
+ 'repository' => \&_repository_end
});
- return $self;
+ my $subhandlers =
+ {
+ 'repository' => 'Gir::Handlers::Repository'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
}
1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Type.pm b/tools/pm/Gir/Handlers/Type.pm
new file mode 100644
index 0000000..626b597
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Type.pm
@@ -0,0 +1,159 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::Type;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Array;
+use Gir::Api::Type;
+use Gir::Api::Varargs;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Array;
+use Gir::Handlers::Type;
+use Gir::Handlers::Varargs;
+
+##
+## private:
+##
+sub _array_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_array_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Array->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('array');
+}
+
+sub _type_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_type_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Type->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('type');
+}
+
+sub _varargs_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_varargs_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Varargs->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('varargs');
+}
+
+sub _array_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('array');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_array_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_array ($name, $object);
+}
+
+sub _type_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('type');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_type_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_type ($name, $object);
+}
+
+sub _varargs_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('varargs');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_varargs_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_varargs ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Type');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_start,
+ 'type' => \&_type_start,
+ 'varargs' => \&_varargs_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'array' => \&_array_end,
+ 'type' => \&_type_end,
+ 'varargs' => \&_varargs_end
+ });
+ my $subhandlers =
+ {
+ 'array' => 'Gir::Handlers::Array',
+ 'type' => 'Gir::Handlers::Type',
+ 'varargs' => 'Gir::Handlers::Varargs'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Union.pm b/tools/pm/Gir/Handlers/Union.pm
index 7ec1199..be2c861 100644
--- a/tools/pm/Gir/Handlers/Union.pm
+++ b/tools/pm/Gir/Handlers/Union.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -20,52 +22,263 @@ package Gir::Handlers::Union;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Union);
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Constructor;
+use Gir::Api::Doc;
+use Gir::Api::Field;
+use Gir::Api::Function;
+use Gir::Api::Method;
+use Gir::Api::Record;
+use Gir::Api::Union;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-use Gir::Handlers::Ignore;
-use Gir::Parser;
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Constructor;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Field;
+use Gir::Handlers::Function;
+use Gir::Handlers::Method;
+use Gir::Handlers::Record;
+use Gir::Handlers::Union;
##
## private:
##
-sub _constructor_start_impl ($$$)
+sub _attribute_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
}
-sub _doc_start_impl ($$$)
+sub _constructor_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_constructor_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Constructor->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('constructor');
}
-sub _field_start_impl ($$$)
+sub _doc_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
}
-sub _function_start_impl ($$$)
+sub _field_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_field_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Field->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('field');
}
-sub _method_start_impl ($$$)
+sub _function_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_function_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Function->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('function');
}
-sub _record_start_impl ($$$)
+sub _method_start ($$@)
{
- my ($self, $parser, $params) = @_;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_method_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Method->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('method');
}
-sub _setup_subhandlers ($)
+sub _record_start ($$@)
{
- my $self = shift;
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_record_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Record->new_with_params ($params);
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
+ $state->push_object ($object);
+ $self->_call_start_hooks ('record');
+}
+
+sub _union_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_union_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Union->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('union');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _constructor_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('constructor');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_constructor_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_constructor ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _field_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('field');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_field_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_field ($name, $object);
+}
+
+sub _function_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('function');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_function_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_function ($name, $object);
+}
+
+sub _method_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('method');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_method_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_method ($name, $object);
+}
+
+sub _record_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('record');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_record_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_record ($name, $object);
+}
+
+sub _union_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('union');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_union_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_union ($name, $object);
}
##
@@ -75,12 +288,41 @@ sub new ($)
{
my $type = shift;
my $class = (ref ($type) or $type or 'Gir::Handlers::Union');
- my $self = $class->SUPER::new ();
-
- $self->_set_end_ignores
+ my $start_store = Gir::Handlers::Common::Store->new
({
- '*' => undef
+ 'attribute' => \&_attribute_start,
+ 'constructor' => \&_constructor_start,
+ 'doc' => \&_doc_start,
+ 'field' => \&_field_start,
+ 'function' => \&_function_start,
+ 'method' => \&_method_start,
+ 'record' => \&_record_start,
+ 'union' => \&_union_start
});
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'constructor' => \&_constructor_end,
+ 'doc' => \&_doc_end,
+ 'field' => \&_field_end,
+ 'function' => \&_function_end,
+ 'method' => \&_method_end,
+ 'record' => \&_record_end,
+ 'union' => \&_union_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'constructor' => 'Gir::Handlers::Constructor',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'field' => 'Gir::Handlers::Field',
+ 'function' => 'Gir::Handlers::Function',
+ 'method' => 'Gir::Handlers::Method',
+ 'record' => 'Gir::Handlers::Record',
+ 'union' => 'Gir::Handlers::Union'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/Ignore.pm b/tools/pm/Gir/Handlers/Varargs.pm
similarity index 62%
rename from tools/pm/Gir/Handlers/Ignore.pm
rename to tools/pm/Gir/Handlers/Varargs.pm
index c3a9d4c..e9c007d 100644
--- a/tools/pm/Gir/Handlers/Ignore.pm
+++ b/tools/pm/Gir/Handlers/Varargs.pm
@@ -1,3 +1,5 @@
+## This file was generated by taghandlerwriter.pl script.
+##
## Copyright 2011 Krzesimir Nowak
##
## This program is free software; you can redistribute it and/or modify
@@ -15,35 +17,25 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
-package Gir::Handlers::Ignore;
+package Gir::Handlers::Varargs;
use strict;
use warnings;
-use parent qw(Gir::Handlers::Generated::Common::Base);
+use parent qw(Gir::Handlers::Common::Base);
-use Gir::Handlers::IgnoreStores;
-sub _setup_handlers ($)
-{
- my $self = shift;
- $self->_set_handlers
- (
- Gir::Handlers::IgnoreStartStore->new (),
- Gir::Handlers::IgnoreEndStore->new ()
- );
-}
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
-sub _setup_subhandlers ($)
-{
- my $self = shift;
- $self->_set_subhandlers
- ({
- '*' => 'Gir::Handlers::Ignore'
- });
-}
+
+##
+## private:
+##
+
##
## public:
@@ -51,8 +43,20 @@ sub _setup_subhandlers ($)
sub new ($)
{
my $type = shift;
- my $class = (ref ($type) or $type or 'Gir::Handlers::Ignore');
- my $self = $class->SUPER::new ();
+ my $class = (ref ($type) or $type or 'Gir::Handlers::Varargs');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+
+ });
+ my $subhandlers =
+ {
+
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
return bless ($self, $class);
}
diff --git a/tools/pm/Gir/Handlers/VirtualMethod.pm b/tools/pm/Gir/Handlers/VirtualMethod.pm
new file mode 100644
index 0000000..4e002ac
--- /dev/null
+++ b/tools/pm/Gir/Handlers/VirtualMethod.pm
@@ -0,0 +1,193 @@
+## This file was generated by taghandlerwriter.pl script.
+##
+## Copyright 2011 Krzesimir Nowak
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+##
+
+package Gir::Handlers::VirtualMethod;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Common::Base);
+
+use Gir::Api::Attribute;
+use Gir::Api::Doc;
+use Gir::Api::Parameters;
+use Gir::Api::ReturnValue;
+
+use Gir::Handlers::Common::Misc;
+use Gir::Handlers::Common::Store;
+use Gir::Handlers::Common::Tags;
+
+use Gir::Handlers::Attribute;
+use Gir::Handlers::Doc;
+use Gir::Handlers::Parameters;
+use Gir::Handlers::ReturnValue;
+
+##
+## private:
+##
+sub _attribute_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_attribute_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Attribute->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('attribute');
+}
+
+sub _doc_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_doc_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Doc->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('doc');
+}
+
+sub _parameters_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_parameters_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::Parameters->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('parameters');
+}
+
+sub _return_value_start ($$@)
+{
+ my ($self, $parser, @atts_vals) = @_;
+ my $params = Gir::Handlers::Common::Tags::get_return_value_params (@atts_vals);
+ my $state = $parser->get_current_state;
+ my $object = Gir::Api::ReturnValue->new_with_params ($params);
+
+ $state->push_object ($object);
+ $self->_call_start_hooks ('return-value');
+}
+
+sub _attribute_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('attribute');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_attribute_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_attribute ($name, $object);
+}
+
+sub _doc_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('doc');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_doc_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_doc ($name, $object);
+}
+
+sub _parameters_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('parameters');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_parameters_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_parameters ($name, $object);
+}
+
+sub _return_value_end ($$)
+{
+ my ($self, $parser) = @_;
+
+ $self->_call_end_hooks ('return-value');
+
+ my $state = $parser->get_current_state;
+ my $object = $state->get_current_object;
+
+ $state->pop_object;
+
+ my $parent_object = $state->get_current_object;
+ my $count = $parent_object->get_g_return_value_count;
+ my $name = Gir::Handlers::Common::Misc::get_object_name ($object, $count);
+
+ $parent_object->add_g_return_value ($name, $object);
+}
+
+##
+## public:
+##
+sub new ($)
+{
+ my $type = shift;
+ my $class = (ref ($type) or $type or 'Gir::Handlers::VirtualMethod');
+ my $start_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_start,
+ 'doc' => \&_doc_start,
+ 'parameters' => \&_parameters_start,
+ 'return-value' => \&_return_value_start
+ });
+ my $end_store = Gir::Handlers::Common::Store->new
+ ({
+ 'attribute' => \&_attribute_end,
+ 'doc' => \&_doc_end,
+ 'parameters' => \&_parameters_end,
+ 'return-value' => \&_return_value_end
+ });
+ my $subhandlers =
+ {
+ 'attribute' => 'Gir::Handlers::Attribute',
+ 'doc' => 'Gir::Handlers::Doc',
+ 'parameters' => 'Gir::Handlers::Parameters',
+ 'return-value' => 'Gir::Handlers::ReturnValue'
+ };
+ my $self = $class->SUPER::new ($start_store, $end_store, $subhandlers);
+
+ return bless ($self, $class);
+}
+
+1; # indicate proper module load.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]