[glibmm/gmmproc-refactor] Fix wrap_init friendship in GError wrappers.
- From: Krzesimir Nowak <krnowak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm/gmmproc-refactor] Fix wrap_init friendship in GError wrappers.
- Date: Sun, 22 Jul 2012 18:16:21 +0000 (UTC)
commit 5b7433b4f853cedf2183623a77972ab8c62b24c0
Author: Krzesimir Nowak <qdlacz gmail com>
Date: Sun Jul 22 16:57:43 2012 +0200
Fix wrap_init friendship in GError wrappers.
tools/pm/Common/Gmmproc.pm | 4 +++-
tools/pm/Common/Output/GError.pm | 15 ++++++++++++---
tools/pm/Common/WrapParser.pm | 14 +++++++++++---
3 files changed, 26 insertions(+), 7 deletions(-)
---
diff --git a/tools/pm/Common/Gmmproc.pm b/tools/pm/Common/Gmmproc.pm
index 17b5609..4344ac6 100644
--- a/tools/pm/Common/Gmmproc.pm
+++ b/tools/pm/Common/Gmmproc.pm
@@ -210,6 +210,7 @@ sub _parse_all_bases
my $type_info_global = $self->_get_type_info_global ();
my $repositories = $self->_get_repositories;
my $mm_module = $self->_get_mm_module;
+ my $wrap_init_namespace = $self->_get_wrap_init_namespace ();
# parallelize
foreach my $base (sort keys %{$bases})
@@ -222,7 +223,8 @@ sub _parse_all_bases
$type_info_global,
$repositories,
$mm_module,
- $base);
+ $base,
+ $wrap_init_namespace);
$wrap_parser->parse;
$tokens_store->set_section_manager ($wrap_parser->get_section_manager);
diff --git a/tools/pm/Common/Output/GError.pm b/tools/pm/Common/Output/GError.pm
index 0e1d17d..d8c9499 100644
--- a/tools/pm/Common/Output/GError.pm
+++ b/tools/pm/Common/Output/GError.pm
@@ -33,12 +33,21 @@ sub _output_gerror
my ($wrap_parser, $cxx_type, $members, $new_style) = @_;
my $string_members = Common::Output::Shared::convert_members_to_strings ($members);
my $section_manager = $wrap_parser->get_section_manager;
- my $namespaces = $wrap_parser->get_namespaces;
+ my $wrap_init_namespace = $wrap_parser->get_wrap_init_namespace ();
my $wrap_init = 'wrap_init()';
+ my $h_includes_section = Common::Output::Shared::get_section ($wrap_parser, Common::Sections::H_INCLUDES);
+ my $mm_module = $wrap_parser->get_mm_module ();
- if (@{$namespaces})
+ $section_manager->append_string_to_section (nl ('#include <', $mm_module, '/wrap_init.h>'),
+ $h_includes_section);
+
+ if (defined ($wrap_init_namespace) and $wrap_init_namespace ne '')
{
- $wrap_init = '::' . $namespaces->[0] . '::' . $wrap_init;
+ $wrap_init = $wrap_init_namespace . '::' . $wrap_init;
+ if (index ($wrap_init_namespace, '::') != 0)
+ {
+ $wrap_init = '::' . $wrap_init;
+ }
}
my $code_string = nl ('class ' . $cxx_type . ' : public Glib::Error') .
diff --git a/tools/pm/Common/WrapParser.pm b/tools/pm/Common/WrapParser.pm
index 3fd62f1..bebf3b8 100644
--- a/tools/pm/Common/WrapParser.pm
+++ b/tools/pm/Common/WrapParser.pm
@@ -3347,9 +3347,9 @@ sub get_repositories ($)
}
# public
-sub new ($$$$$$)
+sub new
{
- my ($type, $tokens_hg, $tokens_ccg, $type_info_global, $repositories, $mm_module, $base) = @_;
+ my ($type, $tokens_hg, $tokens_ccg, $type_info_global, $repositories, $mm_module, $base, $wrap_init_namespace) = @_;
my $class = (ref $type or $type or 'Common::WrapParser');
my $self =
{
@@ -3384,7 +3384,8 @@ sub new ($$$$$$)
'base' => $base,
'filename' => undef,
'wrap_init_entries' => [],
- 'temp_wrap_init_stack' => []
+ 'temp_wrap_init_stack' => [],
+ 'wrap_init_namespace' => $wrap_init_namespace
};
$self = bless $self, $class;
@@ -3467,6 +3468,13 @@ sub new ($$$$$$)
return $self;
}
+sub get_wrap_init_namespace
+{
+ my ($self) = @_;
+
+ return $self->{'wrap_init_namespace'};
+}
+
sub get_wrap_init_entries
{
my ($self) = @_;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]