00001 00010 #ifndef POINT3DSETSPLITER_H 00011 #define POINT3DSETSPLITER_H 00012 00013 #include <boost/shared_ptr.hpp> 00014 using boost::shared_ptr; 00015 00016 #include <vector> 00017 using std::vector; 00018 00019 #include "ThreadSpecificRandomEngine.h" 00020 00021 class Point3DSet; 00022 00024 00027 class Point3DSetSpliter { 00028 00029 public: 00030 00032 Point3DSetSpliter() { 00033 theThreadSpecificRandomEngine.init(); 00034 m_rnd_eng =theThreadSpecificRandomEngine.get(); 00035 } 00036 00038 virtual ~Point3DSetSpliter() { /* NOOP */ 00039 }; 00040 00042 virtual shared_ptr< vector< shared_ptr<Point3DSet> > > split( Point3DSet const& points ) = 0; 00043 00045 void setRNDEngine(RandomEngine *engine) { 00046 m_rnd_eng = engine; 00047 }; 00048 00050 virtual void unsetRNDEngine(void) { 00051 theThreadSpecificRandomEngine.init(); 00052 m_rnd_eng =theThreadSpecificRandomEngine.get(); 00053 }; 00054 00055 protected: 00056 RandomEngine *m_rnd_eng; 00057 }; 00058 00059 #endif