
Abramo, greetings again!
On Mon, Jun 6, 2011 at 8:35 AM, Abramo Bagnara abramo.bagnara@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