00001
00002
00003 #ifndef _SPAFDB_STORAGE_HPP_
00004
00005 #include <list>
00006 #include <vector>
00007
00008 #include <geom/Declarations.hpp>
00009
00010 namespace jafar {
00011 namespace spaf {
00012 class Feature;
00013 class FeaturesBag;
00014 }
00015 namespace spafgraph {
00016 class EdgeProximity;
00017 class Node;
00018 class Graph;
00019 }
00020 namespace spafdb {
00021 class SpafDB;
00022 class Parameter;
00028 class Storage {
00029 friend class SpafDB;
00030 private:
00031 Storage(SpafDB*, const Parameter* param );
00032 ~Storage();
00033 public:
00034 const spafgraph::Graph* graph() const;
00035 const spaf::FeaturesBag& features() const;
00036 spafgraph::Node* node( unsigned int _id );
00037 spafgraph::Node* insertFeature(spaf::Feature* f);
00041 void removeFeature( spaf::Feature* f);
00042 void removeFeature( unsigned int _id );
00043 void insertEdgeProximities(const std::vector<const spafgraph::EdgeProximity*>& );
00044 public:
00045 std::list<spafgraph::Node*> objectsIn( const geom::BoundingBox<3>&) const;
00046 std::list<const spafgraph::EdgeProximity*> proximitiesClose( double distance, double distanceSigma, double angle, double angleSigma) const;
00047 private:
00048 struct Private;
00049 Private* const d;
00050 };
00051 }
00052 }
00053
00054 #endif