[PPL-devel] [GIT] ppl/ppl(master): Fixed some warnings.
Anthony Foiani
anthony.foiani at gmail.com
Mon Jun 6 21:06:44 CEST 2011
Abramo, greetings again!
On Mon, Jun 6, 2011 at 8:35 AM, Abramo Bagnara <abramo.bagnara at gmail.com> wrote:
> Fixed some warnings.
> diff --git a/src/Grid_public.cc b/src/Grid_public.cc
> index 47b8437..82e64a3 100644
> --- a/src/Grid_public.cc
> +++ b/src/Grid_public.cc
> @@ -2735,7 +2735,7 @@ PPL::Grid::wrap_assign(const Variables_Set& vars,
> PPL_DIRTY_TEMP_COEFFICIENT(v_n);
> PPL_DIRTY_TEMP_COEFFICIENT(v_d);
> for (Variables_Set::const_iterator i = vars.begin(),
> - vars_end = vars.end(); i != vars.end(); ++i) {
> + vars_end = vars.end(); i != vars_end; ++i) {
> const Variable x = Variable(*i);
> // Find the frequency and a value for `x' in `gr'.
> if (!gr.frequency_no_check(x, f_n, f_d, v_n, v_d))
Have you considered using BOOST_FOREACH or something similar here? It
should allow you to replace that loop header with something as simple
as:
BOOST_FOREACH( Variables_Set::const_iterator i, vars ) { ...
It even allows for iterating using references, which would remove the
initial assignment in that loop:
BOOST_FOREACH( const Variable & x, vars ) { ...
The author of BOOST_FOREACH goes into excruciating detail in this article:
http://www.artima.com/cppsource/foreach.html
I don't know if you want to drag in BOOST_FOREACH in particular,
though; I believe it relies on Boost.Range, and there may or may not
be issues with shipping Boost-licensed code within the GPL'd PPL.
It's easy enough to cook one up to match the first usage; it's not
perfect (evaluates collection argument twice) but might be worth
looking into:
#define FOREACH( TYPE, ITER, COLLECTION ) \
for ( TYPE ITER = COLLECTION.begin(), \
ITER##_end = COLLECTION.end(); \
ITER != ITER##_end; \
++ITER )
And, of course, this will all go away when C++0x is fully supported. :-/
(Having said that, g++ should support the new "for" syntax as of 4.6,
so perhaps using the FOREACH macro and conditionalizing it on the
basis of g++ version or other indicator of C++0x support might
actually be a reasonable thing to do...)
Hope you find this interesting.
Thanks once again for the great work on the library!
Best regards,
Anthony Foiani
More information about the PPL-devel
mailing list