$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [Review] We're halfway through the GGL review
From: Fabio Fracassi (f.fracassi_at_[hidden])
Date: 2009-11-15 14:48:19
Barend Gehrels wrote:
> Hi Fabio,
> 
> Thanks for your interest and for reviewing our library!
> 
> 
>>
>> polygon p1 = ...;
>> polygon p2 = ...;
>>
>> polygon_set ps1 = make_union(p1, p2);
>> polygon_set ps2;
>> intersection(ps1, p2, ps2);
> The polygon_set is implemented as a multi-polygon within GGL (and indeed 
> you can call it polygon_set, if it fulfils the concept). We didn't merge 
> the Multi* concepts into the generic algorithms, in other words, we 
> don't require anyone to use a multi* (of course algorithms can be used 
> for multi*).
Ok I read about multi* in the docu, but didn't make the connection.
I also find the ggl/multi/... includes somewhat surprising.
Maybe you can use them in one of the examples, to make things clearer.
> 
> Therefore, union and intersection work with output iterators. So:
> union_inserter(p1, p2, std::back_inserter(ps1));
        
Hm, I tried:
        #include <boost/ggl/ggl.hpp>
        #include <boost/ggl/geometries/cartesian3d.hpp>
        #include <boost/ggl/multi/geometries/multi_polygon.hpp>
        #include <boost/ggl/algorithms/union.hpp>
        ...
        typedef multi_polygon<polygon_3d> polygon_set_3d;
        polygon_set_3d ps;
        
        polygon_3d poly1;
        polygon_3d poly2;
        
        union_inserter(poly1, poly2, std::back_inserter(ps));
but got this error:
  error: no matching function for call to 
'union_inserter(ggl::polygon_3d&, ggl::polygon_3d&, 
std::back_insert_iterator<ggl::multi_polygon<ggl::polygon<ggl::point<double, 
3ul, ggl::cs::cartesian>, std::vector, std::vector, true, 
std::allocator, std::allocator>, std::vector, std::allocator> >)'
Am I doing something wrong?
> 
> It is possible that there will be a "intersection" and "union_" as well, 
> detecting if ps1 is a multi-polygon and automatically inserting. But 
> that is more a sort of synonym, similar way to do things.
Yes, I know just a bit of syntactic sugar, but IMO it makes the 
interface much easier to use.
Besides I would probably not call it union_ but geometric_union or some 
such, but thats just personal preference.
> 
> The make_union would require an r-value and if C++0x is there, it can be 
> implemented without copying the whole resultset. Indeed, it fits into 
> the design and naming conventions.
Of course, still I like this syntax best, as it is most natural.
> 
>> On the whole I am very pleased with the documentation, its easy to 
>> read and reasonably complete.
>> I have a general problem with doxygen generated docu with regard to 
>> generic libraries.[...]
> I understand. Several people have addressed this so we will certainly 
> improve the documentation. Thanks for your structure proposal.
> 
Fine, while I was further investigating ggl docu I found another wish:
For each class/function add a short usage example including all relevant 
  includes (something short like the snipplet above)
This makes it immediately clear how things work together.
Regards,
Fabio