2014-04-28 14:18 GMT-04:00 Trevor Saunders <trev.saund...@gmail.com>:
> On Mon, Apr 28, 2014 at 02:07:07PM -0400, Benoit Jacob wrote: > > 2014-04-28 12:17 GMT-04:00 Birunthan Mohanathas < > birunt...@mohanathas.com>: > > > > > On 28 April 2014 14:18, Benoit Jacob <jacob.benoi...@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). > > > > > > > Would it be possible to have a variadic macro that takes N arguments, > > stringifies them, and passes all 2N resulting values (the original N > > arguments and their N stringifications) to a variadic template? > > Well, the bigger problem is that those macros are defining member > functions, so I don't see how you could do that with a variatic > template, accept perhaps for cycle collection if we can have a struct > that takes a variatic template, and then use the variatic template args > in member functions. > Right, NS_IMPL_CYCLE_COLLECTION and its variants are what I have in mind here. Benoit > > Trev > > > > > > Benoit > > > > > > > > > > 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 <hsivo...@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 > > > > > _______________________________________________ > > dev-platform mailing list > > dev-platform@lists.mozilla.org > > https://lists.mozilla.org/listinfo/dev-platform > > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform