22 #ifndef GEOS_GEOM_UTIL_POINTEXTRACTER_H
23 #define GEOS_GEOM_UTIL_POINTEXTRACTER_H
25 #include <geos/export.h>
26 #include <geos/geom/GeometryFilter.h>
27 #include <geos/geom/GeometryCollection.h>
28 #include <geos/platform.h>
49 template <
class ComponentType,
class TargetContainer>
50 static void extract(
const Geometry& geom, TargetContainer& lst)
52 if (
const ComponentType* c = dynamic_cast<const ComponentType*>(&geom) )
57 dynamic_cast<const GeometryCollection*>(&geom) )
59 GeometryExtracter::Extracter<ComponentType, TargetContainer> extracter(lst);
60 c->apply_ro(&extracter);
66 template <
class ComponentType,
class TargetContainer>
74 Extracter(TargetContainer& comps) : comps_(comps) {}
76 TargetContainer& comps_;
80 if (
const ComponentType* c = dynamic_cast<const ComponentType*>(geom) ) {
86 Extracter(
const Extracter& other);
87 Extracter& operator=(
const Extracter& rhs);
91 GeometryExtracter(
const GeometryExtracter& other);
92 GeometryExtracter& operator=(
const GeometryExtracter& rhs);