[glibmm/gmmproc-refactor: 19/23] Add generated modules.



commit 5e1d7bc5574d50ea4fe5dc2027bf9372832966b7
Author: Krzesimir Nowak <qdlacz gmail com>
Date:   Mon Sep 26 14:57:26 2011 +0200

    Add generated modules.

 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         |  462 +++++++++++++++++
 tools/pm/Gir/Handlers/Generated/Common/Tags.pm   |  596 ++++++++++++++++++++++
 tools/pm/Gir/Handlers/Generated/Constant.pm      |  118 +++++
 tools/pm/Gir/Handlers/Generated/Constructor.pm   |  204 ++++++++
 tools/pm/Gir/Handlers/Generated/Doc.pm           |   83 +++
 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 ++++++++
 33 files changed, 6758 insertions(+), 0 deletions(-)
---
diff --git a/tools/pm/Gir/Handlers/Generated/Alias.pm b/tools/pm/Gir/Handlers/Generated/Alias.pm
new file mode 100644
index 0000000..426f17a
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Alias.pm
@@ -0,0 +1,161 @@
+## 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::Generated::Alias;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Alias::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Alias::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Alias::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Alias::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Alias');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Array.pm b/tools/pm/Gir/Handlers/Generated/Array.pm
new file mode 100644
index 0000000..c711630
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Array.pm
@@ -0,0 +1,118 @@
+## 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::Generated::Array;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Array::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Array::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Array');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Bitfield.pm b/tools/pm/Gir/Handlers/Generated/Bitfield.pm
new file mode 100644
index 0000000..2f7ad6c
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Bitfield.pm
@@ -0,0 +1,161 @@
+## 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::Generated::Bitfield;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Member;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Bitfield::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _member_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('member'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Bitfield::_member_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Bitfield::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _member_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('member'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Bitfield::_member_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'member' => \&_member_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'member' => \&_member_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'member'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _member_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_member_params (@atts_vals);
+
+  $self->_member_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _member_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_member_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Bitfield');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/CInclude.pm b/tools/pm/Gir/Handlers/Generated/CInclude.pm
new file mode 100644
index 0000000..1d982b3
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/CInclude.pm
@@ -0,0 +1,83 @@
+## 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::Generated::CInclude;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::CInclude');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Callback.pm b/tools/pm/Gir/Handlers/Generated/Callback.pm
new file mode 100644
index 0000000..857a0b9
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Callback.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Callback;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Callback::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Callback');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Class.pm b/tools/pm/Gir/Handlers/Generated/Class.pm
new file mode 100644
index 0000000..5497e68
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Class.pm
@@ -0,0 +1,462 @@
+## 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::Generated::Class;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Constructor;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Field;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::GlibSignal;
+use Gir::Handlers::Generated::Implements;
+use Gir::Handlers::Generated::Method;
+use Gir::Handlers::Generated::Property;
+use Gir::Handlers::Generated::VirtualMethod;
+
+##
+## private virtuals
+##
+sub _constructor_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_constructor_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_field_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _glib_signal_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('glib:signal'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_glib_signal_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _implements_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('implements'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_implements_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _property_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('property'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_property_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _virtual_method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('virtual-method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_virtual_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _constructor_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_constructor_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_field_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _glib_signal_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('glib:signal'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_glib_signal_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _implements_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('implements'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_implements_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _property_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('property'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_property_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _virtual_method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('virtual-method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Class::_virtual_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      '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,
+      'virtual-method' => \&_virtual_method_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      '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,
+      'virtual-method' => \&_virtual_method_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'constructor',
+      'doc',
+      'field',
+      'function',
+      'glib:signal',
+      'implements',
+      'method',
+      'property',
+      'virtual-method'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _constructor_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_constructor_params (@atts_vals);
+
+  $self->_constructor_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _field_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_field_params (@atts_vals);
+
+  $self->_field_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _glib_signal_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_glib_signal_params (@atts_vals);
+
+  $self->_glib_signal_start_impl ($parser, $params);
+}
+
+sub _implements_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_implements_params (@atts_vals);
+
+  $self->_implements_start_impl ($parser, $params);
+}
+
+sub _method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_method_params (@atts_vals);
+
+  $self->_method_start_impl ($parser, $params);
+}
+
+sub _property_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_property_params (@atts_vals);
+
+  $self->_property_start_impl ($parser, $params);
+}
+
+sub _virtual_method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_virtual_method_params (@atts_vals);
+
+  $self->_virtual_method_start_impl ($parser, $params);
+}
+
+sub _constructor_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_constructor_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _field_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_field_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _glib_signal_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_glib_signal_end_impl ($parser);
+}
+
+sub _implements_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_implements_end_impl ($parser);
+}
+
+sub _method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_method_end_impl ($parser);
+}
+
+sub _property_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_property_end_impl ($parser);
+}
+
+sub _virtual_method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_virtual_method_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Class');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Common/Tags.pm b/tools/pm/Gir/Handlers/Generated/Common/Tags.pm
new file mode 100644
index 0000000..0c41602
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Common/Tags.pm
@@ -0,0 +1,596 @@
+## 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::Generated::Common::Tags;
+
+use strict;
+use warnings;
+
+use Gir::Handlers::Generated::Common::Misc;
+
+sub get_alias_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:type',
+      'name'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_array_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+
+    ],
+    [
+      ['c:type', undef],
+      ['fixed-size', undef],
+      ['length', undef],
+      ['name', undef],
+      ['zero-terminated', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_bitfield_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:type',
+      'name'
+    ],
+    [
+      ['glib:get-type', undef],
+      ['glib:type-name', undef],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_c_include_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_callback_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+      ['c:type', undef],
+      ['introspectable', 1],
+      ['throws', 0],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_class_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:symbol-prefix',
+      'glib:get-type',
+      'glib:type-name',
+      'name'
+    ],
+    [
+      ['abstract', 0],
+      ['c:type', undef],
+      ['glib:fundamental', 0],
+      ['glib:type-struct', undef],
+      ['parent', undef],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_constant_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name',
+      'value'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_constructor_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:identifier',
+      'name'
+    ],
+    [
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['introspectable', 1],
+      ['shadowed-by', undef],
+      ['shadows', undef],
+      ['throws', 0],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_doc_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'xml:whitespace'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_enumeration_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:type',
+      'name'
+    ],
+    [
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['glib:error-domain', undef],
+      ['glib:get-type', undef],
+      ['glib:type-name', undef],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_field_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+      ['bits', undef],
+      ['introspectable', 1],
+      ['private', 0],
+      ['readable', 1],
+      ['writable', 0]
+    ],
+    \ _
+  );
+}
+
+
+sub get_function_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:identifier',
+      'name'
+    ],
+    [
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['introspectable', 1],
+      ['moved-to', undef],
+      ['shadowed-by', undef],
+      ['shadows', undef],
+      ['throws', 0],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_glib_signal_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+      ['action', 0],
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['detailed', 0],
+      ['introspectable', 1],
+      ['no-hooks', 0],
+      ['no-recurse', 0],
+      ['version', undef],
+      ['when', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_implements_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_include_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name',
+      'version'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_interface_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:symbol-prefix',
+      'c:type',
+      'glib:get-type',
+      'glib:type-name',
+      'name'
+    ],
+    [
+      ['glib:type-struct', undef],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_member_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:identifier',
+      'name',
+      'value'
+    ],
+    [
+      ['glib:nick', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_method_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:identifier',
+      'name'
+    ],
+    [
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['introspectable', 1],
+      ['shadowed-by', undef],
+      ['shadows', undef],
+      ['throws', 0],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_namespace_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:identifier-prefixes',
+      'c:symbol-prefixes',
+      'name',
+      'version'
+    ],
+    [
+      ['shared-library', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_package_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_parameter_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'transfer-ownership'
+    ],
+    [
+      ['allow-none', 0],
+      ['caller-allocates', undef],
+      ['closure', undef],
+      ['destroy', undef],
+      ['direction', undef],
+      ['name', undef],
+      ['scope', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_parameters_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_prerequisite_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_property_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name',
+      'transfer-ownership'
+    ],
+    [
+      ['construct', 0],
+      ['construct-only', 0],
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['introspectable', 1],
+      ['readable', 1],
+      ['version', undef],
+      ['writable', 0]
+    ],
+    \ _
+  );
+}
+
+
+sub get_record_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:type',
+      'name'
+    ],
+    [
+      ['c:symbol-prefix', undef],
+      ['disguised', 0],
+      ['foreign', 0],
+      ['glib:get-type', undef],
+      ['glib:is-gtype-struct-for', undef],
+      ['glib:type-name', undef],
+      ['introspectable', 1],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_repository_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'version',
+      'xmlns',
+      'xmlns:c'
+    ],
+    [
+      ['xmlns:glib', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_return_value_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+
+    ],
+    [
+      ['transfer-ownership', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_type_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+
+    ],
+    [
+      ['c:type', undef],
+      ['name', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_union_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'c:type',
+      'name'
+    ],
+    [
+      ['c:symbol-prefix', undef],
+      ['glib:get-type', undef],
+      ['glib:type-name', undef]
+    ],
+    \ _
+  );
+}
+
+
+sub get_varargs_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+
+    ],
+    [
+
+    ],
+    \ _
+  );
+}
+
+
+sub get_virtual_method_params (@)
+{
+  return Gir::Handlers::Generated::Common::Misc::extract_values
+  (
+    [
+      'name'
+    ],
+    [
+      ['deprecated', undef],
+      ['deprecated-version', undef],
+      ['introspectable', 1],
+      ['invoker', undef],
+      ['throws', 0],
+      ['version', undef]
+    ],
+    \ _
+  );
+}
+
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Constant.pm b/tools/pm/Gir/Handlers/Generated/Constant.pm
new file mode 100644
index 0000000..df12705
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Constant.pm
@@ -0,0 +1,118 @@
+## 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::Generated::Constant;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constant::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constant::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Constant');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Constructor.pm b/tools/pm/Gir/Handlers/Generated/Constructor.pm
new file mode 100644
index 0000000..8666fcc
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Constructor.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Constructor;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Constructor::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Constructor');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Doc.pm b/tools/pm/Gir/Handlers/Generated/Doc.pm
new file mode 100644
index 0000000..8afbcba
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Doc.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Doc;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Doc');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Enumeration.pm b/tools/pm/Gir/Handlers/Generated/Enumeration.pm
new file mode 100644
index 0000000..396b038
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Enumeration.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Enumeration;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::Member;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _member_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('member'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_member_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _member_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('member'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Enumeration::_member_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'function' => \&_function_start,
+      'member' => \&_member_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'function' => \&_function_end,
+      'member' => \&_member_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'function',
+      'member'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _member_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_member_params (@atts_vals);
+
+  $self->_member_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _member_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_member_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Enumeration');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Field.pm b/tools/pm/Gir/Handlers/Generated/Field.pm
new file mode 100644
index 0000000..6ef706b
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Field.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Field;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Array;
+use Gir::Handlers::Generated::Callback;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _array_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_array_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _callback_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('callback'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_callback_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _array_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_array_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _callback_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('callback'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_callback_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Field::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_start,
+      'callback' => \&_callback_start,
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_end,
+      'callback' => \&_callback_end,
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'array',
+      'callback',
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _array_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_array_params (@atts_vals);
+
+  $self->_array_start_impl ($parser, $params);
+}
+
+sub _callback_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_callback_params (@atts_vals);
+
+  $self->_callback_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _array_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_array_end_impl ($parser);
+}
+
+sub _callback_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_callback_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Field');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Function.pm b/tools/pm/Gir/Handlers/Generated/Function.pm
new file mode 100644
index 0000000..e65edb5
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Function.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Function;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Function::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Function');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/GlibSignal.pm b/tools/pm/Gir/Handlers/Generated/GlibSignal.pm
new file mode 100644
index 0000000..f374aae
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/GlibSignal.pm
@@ -0,0 +1,204 @@
+## 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::Generated::GlibSignal;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::GlibSignal::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::GlibSignal');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Implements.pm b/tools/pm/Gir/Handlers/Generated/Implements.pm
new file mode 100644
index 0000000..9938829
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Implements.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Implements;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Implements');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Include.pm b/tools/pm/Gir/Handlers/Generated/Include.pm
new file mode 100644
index 0000000..c2024ef
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Include.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Include;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Include');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Interface.pm b/tools/pm/Gir/Handlers/Generated/Interface.pm
new file mode 100644
index 0000000..9e74348
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Interface.pm
@@ -0,0 +1,376 @@
+## 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::Generated::Interface;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::GlibSignal;
+use Gir::Handlers::Generated::Method;
+use Gir::Handlers::Generated::Prerequisite;
+use Gir::Handlers::Generated::Property;
+use Gir::Handlers::Generated::VirtualMethod;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _glib_signal_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('glib:signal'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_glib_signal_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _prerequisite_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('prerequisite'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_prerequisite_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _property_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('property'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_property_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _virtual_method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('virtual-method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_virtual_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _glib_signal_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('glib:signal'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_glib_signal_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _prerequisite_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('prerequisite'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_prerequisite_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _property_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('property'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_property_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _virtual_method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('virtual-method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Interface::_virtual_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'function' => \&_function_start,
+      'glib:signal' => \&_glib_signal_start,
+      'method' => \&_method_start,
+      'prerequisite' => \&_prerequisite_start,
+      'property' => \&_property_start,
+      'virtual-method' => \&_virtual_method_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'function' => \&_function_end,
+      'glib:signal' => \&_glib_signal_end,
+      'method' => \&_method_end,
+      'prerequisite' => \&_prerequisite_end,
+      'property' => \&_property_end,
+      'virtual-method' => \&_virtual_method_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'function',
+      'glib:signal',
+      'method',
+      'prerequisite',
+      'property',
+      'virtual-method'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _glib_signal_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_glib_signal_params (@atts_vals);
+
+  $self->_glib_signal_start_impl ($parser, $params);
+}
+
+sub _method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_method_params (@atts_vals);
+
+  $self->_method_start_impl ($parser, $params);
+}
+
+sub _prerequisite_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_prerequisite_params (@atts_vals);
+
+  $self->_prerequisite_start_impl ($parser, $params);
+}
+
+sub _property_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_property_params (@atts_vals);
+
+  $self->_property_start_impl ($parser, $params);
+}
+
+sub _virtual_method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_virtual_method_params (@atts_vals);
+
+  $self->_virtual_method_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _glib_signal_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_glib_signal_end_impl ($parser);
+}
+
+sub _method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_method_end_impl ($parser);
+}
+
+sub _prerequisite_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_prerequisite_end_impl ($parser);
+}
+
+sub _property_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_property_end_impl ($parser);
+}
+
+sub _virtual_method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_virtual_method_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Interface');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Member.pm b/tools/pm/Gir/Handlers/Generated/Member.pm
new file mode 100644
index 0000000..884df9d
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Member.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Member;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Member');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Method.pm b/tools/pm/Gir/Handlers/Generated/Method.pm
new file mode 100644
index 0000000..ed511c4
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Method.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Method;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Method::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Method');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Namespace.pm b/tools/pm/Gir/Handlers/Generated/Namespace.pm
new file mode 100644
index 0000000..f9a2fd4
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Namespace.pm
@@ -0,0 +1,505 @@
+## 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::Generated::Namespace;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Alias;
+use Gir::Handlers::Generated::Bitfield;
+use Gir::Handlers::Generated::Callback;
+use Gir::Handlers::Generated::Class;
+use Gir::Handlers::Generated::Constant;
+use Gir::Handlers::Generated::Enumeration;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::Interface;
+use Gir::Handlers::Generated::Record;
+use Gir::Handlers::Generated::Union;
+
+##
+## private virtuals
+##
+sub _alias_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('alias'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_alias_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _bitfield_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('bitfield'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_bitfield_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _callback_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('callback'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_callback_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _class_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('class'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_class_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _constant_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('constant'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_constant_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _enumeration_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('enumeration'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_enumeration_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _interface_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('interface'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_interface_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _record_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('record'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_record_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _union_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('union'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_union_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _alias_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('alias'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_alias_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _bitfield_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('bitfield'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_bitfield_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _callback_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('callback'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_callback_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _class_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('class'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_class_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _constant_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('constant'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_constant_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _enumeration_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('enumeration'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_enumeration_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _interface_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('interface'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_interface_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _record_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('record'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_record_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _union_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('union'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Namespace::_union_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'alias' => \&_alias_start,
+      'bitfield' => \&_bitfield_start,
+      'callback' => \&_callback_start,
+      'class' => \&_class_start,
+      'constant' => \&_constant_start,
+      'enumeration' => \&_enumeration_start,
+      'function' => \&_function_start,
+      'interface' => \&_interface_start,
+      'record' => \&_record_start,
+      'union' => \&_union_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'alias' => \&_alias_end,
+      'bitfield' => \&_bitfield_end,
+      'callback' => \&_callback_end,
+      'class' => \&_class_end,
+      'constant' => \&_constant_end,
+      'enumeration' => \&_enumeration_end,
+      'function' => \&_function_end,
+      'interface' => \&_interface_end,
+      'record' => \&_record_end,
+      'union' => \&_union_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'alias',
+      'bitfield',
+      'callback',
+      'class',
+      'constant',
+      'enumeration',
+      'function',
+      'interface',
+      'record',
+      'union'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _alias_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_alias_params (@atts_vals);
+
+  $self->_alias_start_impl ($parser, $params);
+}
+
+sub _bitfield_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_bitfield_params (@atts_vals);
+
+  $self->_bitfield_start_impl ($parser, $params);
+}
+
+sub _callback_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_callback_params (@atts_vals);
+
+  $self->_callback_start_impl ($parser, $params);
+}
+
+sub _class_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_class_params (@atts_vals);
+
+  $self->_class_start_impl ($parser, $params);
+}
+
+sub _constant_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_constant_params (@atts_vals);
+
+  $self->_constant_start_impl ($parser, $params);
+}
+
+sub _enumeration_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_enumeration_params (@atts_vals);
+
+  $self->_enumeration_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _interface_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_interface_params (@atts_vals);
+
+  $self->_interface_start_impl ($parser, $params);
+}
+
+sub _record_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_record_params (@atts_vals);
+
+  $self->_record_start_impl ($parser, $params);
+}
+
+sub _union_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_union_params (@atts_vals);
+
+  $self->_union_start_impl ($parser, $params);
+}
+
+sub _alias_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_alias_end_impl ($parser);
+}
+
+sub _bitfield_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_bitfield_end_impl ($parser);
+}
+
+sub _callback_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_callback_end_impl ($parser);
+}
+
+sub _class_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_class_end_impl ($parser);
+}
+
+sub _constant_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_constant_end_impl ($parser);
+}
+
+sub _enumeration_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_enumeration_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _interface_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_interface_end_impl ($parser);
+}
+
+sub _record_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_record_end_impl ($parser);
+}
+
+sub _union_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_union_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Namespace');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Package.pm b/tools/pm/Gir/Handlers/Generated/Package.pm
new file mode 100644
index 0000000..8ec8982
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Package.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Package;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Package');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Parameter.pm b/tools/pm/Gir/Handlers/Generated/Parameter.pm
new file mode 100644
index 0000000..8008e75
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Parameter.pm
@@ -0,0 +1,247 @@
+## 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::Generated::Parameter;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Array;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Type;
+use Gir::Handlers::Generated::Varargs;
+
+##
+## private virtuals
+##
+sub _array_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_array_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _varargs_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('varargs'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_varargs_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _array_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_array_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _varargs_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('varargs'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameter::_varargs_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_start,
+      'doc' => \&_doc_start,
+      'type' => \&_type_start,
+      'varargs' => \&_varargs_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_end,
+      'doc' => \&_doc_end,
+      'type' => \&_type_end,
+      'varargs' => \&_varargs_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'array',
+      'doc',
+      'type',
+      'varargs'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _array_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_array_params (@atts_vals);
+
+  $self->_array_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _varargs_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_varargs_params (@atts_vals);
+
+  $self->_varargs_start_impl ($parser, $params);
+}
+
+sub _array_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_array_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+sub _varargs_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_varargs_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Parameter');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Parameters.pm b/tools/pm/Gir/Handlers/Generated/Parameters.pm
new file mode 100644
index 0000000..9ed8f11
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Parameters.pm
@@ -0,0 +1,118 @@
+## 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::Generated::Parameters;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Parameter;
+
+##
+## private virtuals
+##
+sub _parameter_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameter'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameters::_parameter_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameter_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameter'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Parameters::_parameter_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'parameter' => \&_parameter_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'parameter' => \&_parameter_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'parameter'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _parameter_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameter_params (@atts_vals);
+
+  $self->_parameter_start_impl ($parser, $params);
+}
+
+sub _parameter_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameter_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Parameters');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Prerequisite.pm b/tools/pm/Gir/Handlers/Generated/Prerequisite.pm
new file mode 100644
index 0000000..ad8d98f
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Prerequisite.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Prerequisite;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Prerequisite');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Property.pm b/tools/pm/Gir/Handlers/Generated/Property.pm
new file mode 100644
index 0000000..cf73499
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Property.pm
@@ -0,0 +1,204 @@
+## 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::Generated::Property;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Array;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _array_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_array_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _array_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_array_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Property::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_start,
+      'doc' => \&_doc_start,
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_end,
+      'doc' => \&_doc_end,
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'array',
+      'doc',
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _array_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_array_params (@atts_vals);
+
+  $self->_array_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _array_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_array_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Property');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Record.pm b/tools/pm/Gir/Handlers/Generated/Record.pm
new file mode 100644
index 0000000..0ce57c4
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Record.pm
@@ -0,0 +1,333 @@
+## 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::Generated::Record;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Constructor;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Field;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::Method;
+use Gir::Handlers::Generated::Union;
+
+##
+## private virtuals
+##
+sub _constructor_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_constructor_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_field_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _union_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('union'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_union_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _constructor_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_constructor_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_field_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _union_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('union'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Record::_union_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'constructor' => \&_constructor_start,
+      'doc' => \&_doc_start,
+      'field' => \&_field_start,
+      'function' => \&_function_start,
+      'method' => \&_method_start,
+      'union' => \&_union_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'constructor' => \&_constructor_end,
+      'doc' => \&_doc_end,
+      'field' => \&_field_end,
+      'function' => \&_function_end,
+      'method' => \&_method_end,
+      'union' => \&_union_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'constructor',
+      'doc',
+      'field',
+      'function',
+      'method',
+      'union'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _constructor_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_constructor_params (@atts_vals);
+
+  $self->_constructor_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _field_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_field_params (@atts_vals);
+
+  $self->_field_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_method_params (@atts_vals);
+
+  $self->_method_start_impl ($parser, $params);
+}
+
+sub _union_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_union_params (@atts_vals);
+
+  $self->_union_start_impl ($parser, $params);
+}
+
+sub _constructor_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_constructor_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _field_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_field_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_method_end_impl ($parser);
+}
+
+sub _union_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_union_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Record');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Repository.pm b/tools/pm/Gir/Handlers/Generated/Repository.pm
new file mode 100644
index 0000000..10d48c7
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Repository.pm
@@ -0,0 +1,247 @@
+## 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::Generated::Repository;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::CInclude;
+use Gir::Handlers::Generated::Include;
+use Gir::Handlers::Generated::Namespace;
+use Gir::Handlers::Generated::Package;
+
+##
+## private virtuals
+##
+sub _c_include_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('c:include'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_c_include_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _include_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('include'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_include_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _namespace_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('namespace'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_namespace_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _package_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('package'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_package_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _c_include_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('c:include'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_c_include_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _include_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('include'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_include_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _namespace_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('namespace'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_namespace_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _package_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('package'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Repository::_package_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'c:include' => \&_c_include_start,
+      'include' => \&_include_start,
+      'namespace' => \&_namespace_start,
+      'package' => \&_package_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'c:include' => \&_c_include_end,
+      'include' => \&_include_end,
+      'namespace' => \&_namespace_end,
+      'package' => \&_package_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'c:include',
+      'include',
+      'namespace',
+      'package'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _c_include_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_c_include_params (@atts_vals);
+
+  $self->_c_include_start_impl ($parser, $params);
+}
+
+sub _include_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_include_params (@atts_vals);
+
+  $self->_include_start_impl ($parser, $params);
+}
+
+sub _namespace_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_namespace_params (@atts_vals);
+
+  $self->_namespace_start_impl ($parser, $params);
+}
+
+sub _package_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_package_params (@atts_vals);
+
+  $self->_package_start_impl ($parser, $params);
+}
+
+sub _c_include_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_c_include_end_impl ($parser);
+}
+
+sub _include_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_include_end_impl ($parser);
+}
+
+sub _namespace_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_namespace_end_impl ($parser);
+}
+
+sub _package_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_package_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Repository');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/ReturnValue.pm b/tools/pm/Gir/Handlers/Generated/ReturnValue.pm
new file mode 100644
index 0000000..33d0638
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/ReturnValue.pm
@@ -0,0 +1,204 @@
+## 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::Generated::ReturnValue;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Array;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _array_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_array_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _array_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_array_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::ReturnValue::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_start,
+      'doc' => \&_doc_start,
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_end,
+      'doc' => \&_doc_end,
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'array',
+      'doc',
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _array_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_array_params (@atts_vals);
+
+  $self->_array_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _array_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_array_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::ReturnValue');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/TopLevel.pm b/tools/pm/Gir/Handlers/Generated/TopLevel.pm
new file mode 100644
index 0000000..5149253
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/TopLevel.pm
@@ -0,0 +1,118 @@
+## 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::Generated::TopLevel;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Repository;
+
+##
+## private virtuals
+##
+sub _repository_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('repository'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::TopLevel::_repository_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _repository_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('repository'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::TopLevel::_repository_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'repository' => \&_repository_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'repository' => \&_repository_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'repository'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _repository_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_repository_params (@atts_vals);
+
+  $self->_repository_start_impl ($parser, $params);
+}
+
+sub _repository_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_repository_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::TopLevel');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Type.pm b/tools/pm/Gir/Handlers/Generated/Type.pm
new file mode 100644
index 0000000..e3e84b6
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Type.pm
@@ -0,0 +1,161 @@
+## 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::Generated::Type;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Array;
+use Gir::Handlers::Generated::Type;
+
+##
+## private virtuals
+##
+sub _array_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Type::_array_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Type::_type_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _array_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('array'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Type::_array_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _type_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('type'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Type::_type_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_start,
+      'type' => \&_type_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'array' => \&_array_end,
+      'type' => \&_type_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'array',
+      'type'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _array_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_array_params (@atts_vals);
+
+  $self->_array_start_impl ($parser, $params);
+}
+
+sub _type_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_type_params (@atts_vals);
+
+  $self->_type_start_impl ($parser, $params);
+}
+
+sub _array_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_array_end_impl ($parser);
+}
+
+sub _type_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_type_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Type');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Union.pm b/tools/pm/Gir/Handlers/Generated/Union.pm
new file mode 100644
index 0000000..e6a93ee
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Union.pm
@@ -0,0 +1,333 @@
+## 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::Generated::Union;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Constructor;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Field;
+use Gir::Handlers::Generated::Function;
+use Gir::Handlers::Generated::Method;
+use Gir::Handlers::Generated::Record;
+
+##
+## private virtuals
+##
+sub _constructor_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_constructor_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_field_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_function_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_method_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _record_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('record'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_record_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _constructor_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('constructor'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_constructor_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _field_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('field'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_field_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _function_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('function'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_function_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _method_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('method'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_method_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _record_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('record'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::Union::_record_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'constructor' => \&_constructor_start,
+      'doc' => \&_doc_start,
+      'field' => \&_field_start,
+      'function' => \&_function_start,
+      'method' => \&_method_start,
+      'record' => \&_record_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'constructor' => \&_constructor_end,
+      'doc' => \&_doc_end,
+      'field' => \&_field_end,
+      'function' => \&_function_end,
+      'method' => \&_method_end,
+      'record' => \&_record_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'constructor',
+      'doc',
+      'field',
+      'function',
+      'method',
+      'record'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _constructor_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_constructor_params (@atts_vals);
+
+  $self->_constructor_start_impl ($parser, $params);
+}
+
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _field_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_field_params (@atts_vals);
+
+  $self->_field_start_impl ($parser, $params);
+}
+
+sub _function_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_function_params (@atts_vals);
+
+  $self->_function_start_impl ($parser, $params);
+}
+
+sub _method_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_method_params (@atts_vals);
+
+  $self->_method_start_impl ($parser, $params);
+}
+
+sub _record_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_record_params (@atts_vals);
+
+  $self->_record_start_impl ($parser, $params);
+}
+
+sub _constructor_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_constructor_end_impl ($parser);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _field_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_field_end_impl ($parser);
+}
+
+sub _function_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_function_end_impl ($parser);
+}
+
+sub _method_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_method_end_impl ($parser);
+}
+
+sub _record_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_record_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Union');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/Varargs.pm b/tools/pm/Gir/Handlers/Generated/Varargs.pm
new file mode 100644
index 0000000..1360faf
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/Varargs.pm
@@ -0,0 +1,83 @@
+## 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::Generated::Varargs;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::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
+    ({
+
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::Varargs');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.
diff --git a/tools/pm/Gir/Handlers/Generated/VirtualMethod.pm b/tools/pm/Gir/Handlers/Generated/VirtualMethod.pm
new file mode 100644
index 0000000..4a38a68
--- /dev/null
+++ b/tools/pm/Gir/Handlers/Generated/VirtualMethod.pm
@@ -0,0 +1,204 @@
+## 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::Generated::VirtualMethod;
+
+use strict;
+use warnings;
+
+use parent qw(Gir::Handlers::Generated::Common::Base);
+
+use Gir::Handlers::Generated::Common::Store;
+use Gir::Handlers::Generated::Common::Tags;
+use Gir::Handlers::Generated::Doc;
+use Gir::Handlers::Generated::Parameters;
+use Gir::Handlers::Generated::ReturnValue;
+
+##
+## private virtuals
+##
+sub _doc_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_doc_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_parameters_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_start_impl ($$$)
+{
+  my $self = shift;
+
+  unless ($self->_is_start_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_return_value_start_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _doc_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('doc'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_doc_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _parameters_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('parameters'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_parameters_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _return_value_end_impl ($$)
+{
+  my $self = shift;
+
+  unless ($self->_is_end_ignored ('return-value'))
+  {
+    #TODO: throw something.
+    print STDERR 'Gir::Handlers::Generated::VirtualMethod::_return_value_end_impl not implemented.' . "\n";
+    exit (1);
+  }
+}
+
+sub _setup_handlers ($)
+{
+  my $self = shift;
+
+  $self->_set_handlers
+  (
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_start,
+      'parameters' => \&_parameters_start,
+      'return-value' => \&_return_value_start
+    }),
+    Gir::Handlers::Generated::Common::Store->new
+    ({
+      'doc' => \&_doc_end,
+      'parameters' => \&_parameters_end,
+      'return-value' => \&_return_value_end
+    })
+  );
+}
+
+sub _setup_subhandlers ($)
+{
+  my $self = shift;
+
+  $self->_set_subhandlers
+  (
+    $self->_generate_subhandlers
+    ([
+      'doc',
+      'parameters',
+      'return-value'
+    ])
+  );
+}
+
+##
+## private (sort of)
+##
+sub _doc_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_doc_params (@atts_vals);
+
+  $self->_doc_start_impl ($parser, $params);
+}
+
+sub _parameters_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_parameters_params (@atts_vals);
+
+  $self->_parameters_start_impl ($parser, $params);
+}
+
+sub _return_value_start ($$@)
+{
+  my ($self, $parser, @atts_vals) = @_;
+  my $params = Gir::Handlers::Generated::Common::Tags::get_return_value_params (@atts_vals);
+
+  $self->_return_value_start_impl ($parser, $params);
+}
+
+sub _doc_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_doc_end_impl ($parser);
+}
+
+sub _parameters_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_parameters_end_impl ($parser);
+}
+
+sub _return_value_end ($$)
+{
+  my ($self, $parser) = @_;
+
+  $self->_return_value_end_impl ($parser);
+}
+
+##
+## public
+##
+sub new ($)
+{
+  my $type = shift;
+  my $class = (ref ($type) or $type or 'Gir::Handlers::Generated::VirtualMethod');
+  my $self = $class->SUPER::new ();
+
+  return bless ($self, $class);
+}
+
+1; # indicate proper module load.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]