diff --git a/PerlQt/module.conf b/PerlQt/module.conf index 2fc033e..574bb8c 100644 --- a/PerlQt/module.conf +++ b/PerlQt/module.conf @@ -4,6 +4,7 @@ root_namespace : 'Qt' default_namespace : 'Qt::Global' template_filename : _template.unsorted template_filename_final : _template +root_filename : 'Qt' skip_includes: - "QtCore/qsharedpointer_impl.h" diff --git a/PerlQt/script/create_top_dot_xs.pl b/PerlQt/script/create_top_dot_xs.pl index e37da14..4553eab 100755 --- a/PerlQt/script/create_top_dot_xs.pl +++ b/PerlQt/script/create_top_dot_xs.pl @@ -74,10 +74,31 @@ sub main { $header{$meta->{FILE}}++ if exists $meta->{FILE}; } elsif (/\.typedef$/o) { + ( my $m = $_ ) =~ s/\.typedef$/.meta/o; + my $meta = load_yaml($m); + my $class = $meta->{NAME}; + my @class = split /\:\:/, $class; + my @path = File::Spec::->splitdir($_); + pop @path; + my $path = File::Spec::->catdir(@path); my $typedef = load_yaml($_); foreach my $k (keys %$typedef) { - push @typedef, $typedef->{$k} if - $k =~ /^T_(?:ARRAY|FPOINTER)_/o; + if ($k =~ /^T_(?:ARRAY|FPOINTER)_/o) { + my $v = $typedef->{$k}; + if ($class ne $mod_conf->{default_namespace}) { + # subst with full name + for (my $i = $#class; $i >= 0; $i--) { + my $file = File::Spec::->catdir($path, join('__', @class[0..$i]). '.typedef'); + next if !-f $file; + my $typedef2 = load_yaml($file); + foreach my $j (keys %$typedef2) { + next if $j eq $k; + $v =~ s/(?splitdir($in); + $filename = $path[-1]; + $filename =~ s/\.yml$//o; local ( *INPUT ); open INPUT, '<', $in or die "cannot open file: $!"; my $cont = do { local $/; ; };