On 28 April 2014 14:18, Benoit Jacob <
jacob.b...@gmail.com> wrote:
> Question: is there a plan to switch to an implementation based on variadic
> templates when we will stop supporting compilers that don't support them? Do
> you know when that would be (of the compilers that we currently support,
> which ones don't support variadic templates?)
I don't think a purely variadic template based solution is possible
(e.g. due to argument stringification employed by NS_IMPL_ADDREF and
others).
As for compiler support, I believe our current MSVC version is the
only one lacking variadic templates. I don't know if/when we are going
to switch to VS2013.
On 28 April 2014 12:07, Henri Sivonen <
hsiv...@hsivonen.fi> wrote:
> Cool. Is there a script that rewrites mq patches whose context has
> numbered macros to not expect numbered macros?
Something like this should work (please use with caution because it's
Perl and because I only did a quick test):
perl -i.bak -0777 -pe '
$names = join("|", (
"NS_IMPL_CI_INTERFACE_GETTER#",
"NS_IMPL_CYCLE_COLLECTION_#",
"NS_IMPL_CYCLE_COLLECTION_INHERITED_#",
"NS_IMPL_ISUPPORTS#",
"NS_IMPL_ISUPPORTS#_CI",
"NS_IMPL_ISUPPORTS_INHERITED#",
"NS_IMPL_QUERY_INTERFACE#",
"NS_IMPL_QUERY_INTERFACE#_CI",
"NS_IMPL_QUERY_INTERFACE_INHERITED#",
"NS_INTERFACE_TABLE#",
"NS_INTERFACE_TABLE_INHERITED#",
)) =~ s/#/[1-9]\\d?/gr;
sub rep {
my ($name, $args) = @_;
my $unnumbered_name = $name =~ s/_?\d+//r;
my $spaces_to_remove = length($name) - length($unnumbered_name);
$args =~ s/^(. {16}) {$spaces_to_remove}/\1/gm;
return $unnumbered_name . $args;
}
s/($names)(\(.*?\))/rep($1, $2)/ges;
' some-patch.diff