Boost logo

Boost :

Subject: Re: [boost] [Review Request] Inclusion of the Boost.Polygon Voronoi Library
From: Andrii Sydorchuk (sydorchuk.andriy_at_[hidden])
Date: 2012-05-20 04:25:12


>
> Can you clarify this? This sounds like something which could be policy
> driven via a template parameter rather than specified globally via a macro,
> but I'm not really sure what you're referring to.

To clarify things a bit:

Voronoi diagram data structure contains three arrays of: Voronoi vertices,
Voronoi edges, Voronoi cells:
http://svn.boost.org/svn/boost/trunk/boost/polygon/voronoi_diagram.hpp.

All thee data structures that represent vertex/edge/cell are interconnected
via pointers to each other.

Apart from topology information it's usually useful to be able to associate
some information with the primitive (vertex/edge/cell).
At the moment this is implemented via mutable void pointer, thus
simplifying template interface for the above data structures.
As discussed previously on this list, such a pointer adds additional memory
overhead in case user is not associating any data with Voronoi primitives.
That's why I added compile time directives to disable data field at compile
time.

Making this data field as a template parameter, would add additional
complexity to those data structures.
Also it would imply circular dependency as each of the Voronoi structures
needs to know the type of the others two (and they could have different
type of data associated with them).
Plus it wouldn't solve the issue with memory overhead if this member is not
required.
Those are the reasons I consider the mutable void* data member enclosed
into precompiler directives to be a better design.

Andrii


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk