mirror of https://github.com/CGAL/cgal
The PR #1791 introduced `CGAL::Point_set_3`, and factorized the `Property_map` implementation of `Surface_mesh` into a new class template `CGAL::Properties::Property_map<Key, T>`. The backward compatibility was supposed to be ensured by the fact that `Surface_mesh<Point>::Property_map<Key,T>` had `Properties::Property_map<Key, T>` as base class. But that compatibility was only partial, and there could be ambiguities in the calls to `get` and `put` with those property maps. This commit/PR renamed `Properties::Property_map` to `Properties::Property_map_base`, and added a third parameter, used as the `Derived` class in the CRTP used by `boost::put_get_helper`. That way, the `get` and `put` functions are defined directory on the real class `Surface_mesh::Property_map<Key, T>` and not on its base class. The same has been modified in `CGAL::Point_set_3`. That makes the use of `Property_base_base` and `Property_container` a little trickier, but that removes several ugly non-portable hacks, like the `reinterpret_cast` that were used to convert a pointer to base class of the pmap to the pointer the real pmap. Now that is a lot cleaner. I have verified that the documentation is not modified. Actually, the PR #1791 did modify the documentation of `Surface_mesh` (see the member method `add_property_map` for example), and this PR fixes the situation: the documentation of `Surface_mesh` is put back to the version in CGAL-4.9. |
||
|---|---|---|
| .. | ||
| doc/Point_set_3 | ||
| examples/Point_set_3 | ||
| include/CGAL | ||
| package_info/Point_set_3 | ||
| test/Point_set_3 | ||