00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GEOS_GEOM_UTIL_POINTEXTRACTER_H
00018 #define GEOS_GEOM_UTIL_POINTEXTRACTER_H
00019
00020 #include <geos/geom/GeometryFilter.h>
00021 #include <geos/geom/Point.h>
00022 #include <geos/platform.h>
00023 #include <vector>
00024
00025 namespace geos {
00026 namespace geom {
00027 namespace util {
00028
00032 class PointExtracter: public GeometryFilter {
00033
00034 private:
00035 Point::ConstVect& comps;
00036
00037 public:
00044 static void getPoints(const Geometry &geom, Point::ConstVect &ret)
00045 {
00046 PointExtracter pe(ret);
00047 geom.apply_ro(&pe);
00048 }
00049
00054 PointExtracter(Point::ConstVect& newComps)
00055 :
00056 comps(newComps)
00057 {}
00058
00059 void filter_rw(Geometry *geom)
00060 {
00061 if ( const Point *p=dynamic_cast<const Point *>(geom) )
00062 comps.push_back(p);
00063 }
00064
00065 void filter_ro(const Geometry *geom)
00066 {
00067 if ( const Point *p=dynamic_cast<const Point *>(geom) )
00068 comps.push_back(p);
00069 }
00070
00071 };
00072
00073 }
00074 }
00075 }
00076
00077 #endif
00078
00079
00080
00081
00082
00083
00084