Jafar
|
00001 /* $Id$ */ 00002 00003 #ifndef _SPAFDB_QUERY_HPP_ 00004 #define _SPAFDB_QUERY_HPP_ 00005 00006 #include <list> 00007 00008 namespace jafar { 00009 namespace geom { 00010 template<int dimension> 00011 class Atom; 00012 } 00013 namespace spaf { 00014 class FeaturesBag; 00015 } 00016 namespace spafgraph { 00017 class Node; 00018 } 00019 namespace spafdb { 00020 class Storage; 00025 class SelectQuery { 00026 public: 00027 virtual ~SelectQuery(); 00031 virtual spaf::FeaturesBag selectFeatures(const Storage*) const = 0; 00032 virtual std::list<spafgraph::Node*> selectNodes(const Storage*) const = 0; 00033 }; 00038 class SelectAllQuery : public SelectQuery { 00039 public: 00040 virtual ~SelectAllQuery(); 00041 virtual spaf::FeaturesBag selectFeatures(const Storage*) const; 00042 virtual std::list<spafgraph::Node*> selectNodes(const Storage*) const; 00043 }; 00048 class SelectQueryProximity : public SelectQuery { 00049 public: 00050 SelectQueryProximity(const geom::Atom<3>* atom, double distance, int max); 00051 virtual ~SelectQueryProximity(); 00052 virtual spaf::FeaturesBag selectFeatures(const Storage*) const; 00053 virtual std::list<spafgraph::Node*> selectNodes(const Storage*) const; 00054 public: 00055 void setAtom( const geom::Atom<3>* atom ); 00056 private: 00057 template< typename _ResultFiller_, typename _ResultType_ > 00058 inline void execute( const Storage* _storage, _ResultType_ & _result) const; 00059 private: 00060 struct Private; 00061 Private* const d; 00062 }; 00063 } 00064 } 00065 00066 #endif
Generated on Wed Oct 15 2014 00:37:28 for Jafar by doxygen 1.7.6.1 |