[Bug 1078438] Templated types are causing "Could not find a typemap for C type"

bugzilla at redhat.com bugzilla at redhat.com
Thu Mar 20 07:42:06 UTC 2014


https://bugzilla.redhat.com/show_bug.cgi?id=1078438



--- Comment #2 from Petr Pisar <ppisar at redhat.com> ---
ExtUtils::ParseXS::Utilities::tidy_type() does not parse and normalize some C++
type declarations properly:

# perl -MExtUtils::ParseXS::Utilities=tidy_type -e 'print
tidy_type(q{std::vector< unsigned int >}), qq{\n}'
std::vector< unsigned int >

While the output should be:

std::vector<unsigned int>

This is fixed by upstream perl commit:

commit ae7fdf584559a304eb5992a58cd58349cc7c58da
Author: Steffen Mueller <smueller at cpan.org>
Date:   Wed May 22 21:49:06 2013 +0200

    EU::ParseXS: Attempt to canonicalize C++ types in tidy_type

    Includes moving tidy_type to ExtUtils::Typemaps where it seems to
    belong. It's a pretty poor canonicalizer, but better than nothing!

The key change is:

+  # for templated C++ types, do some bit of flawed canonicalization
+  # wrt. templates at least
+  if (/[<>]/) {
+    s/\s*([<>])\s*/$1/g;
+    s/>>/> >/g;
+  }

in tidy_type().

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=TJnzvvXfNj&a=cc_unsubscribe



More information about the perl-devel mailing list