00001 // See the file LICENSE in the some directory as this file for legal 00002 // notices about this software. 00003 #ifndef DEV_W3_ORG__2001_BLINDFOLD_SRC_QUERYABLEPOOL_H 00004 #define DEV_W3_ORG__2001_BLINDFOLD_SRC_QUERYABLEPOOL_H 00005 // $Id: QueryablePool_8h-source.html,v 1.2 2001/10/10 20:40:58 sandro Exp $ 00006 #include "config.h" 00007 #include "Pool.h" 00008 class Query; 00009 class TripleSource; 00010 00018 class QueryablePool : public Pool { 00019 00020 public: 00021 00022 // STANDARD MEMBER FUNCTIONS 00023 QueryablePool(); 00024 QueryablePool(const QueryablePool& other); 00025 const QueryablePool& operator=(const QueryablePool& other); 00026 bool operator==(const QueryablePool& other) const; 00027 bool operator<(const QueryablePool& other) const; 00028 size_t hash() const; 00029 friend std::ostream& operator<<(std::ostream& s, const QueryablePool& me); 00030 //std::ostream& print_to(std::ostream& stream) const; 00031 ~QueryablePool(); 00032 00033 // (RE)IMPLEMENTATION OF INHERITED MEMBERS 00034 00035 // CLASS-SPECIFIC PUBLIC INTERFACE 00036 00059 virtual Query* query(const TripleSource& pattern) = 0; 00060 00061 // these can now be implemented genericaly... 00062 00063 TripleSource* unionWith(const TripleSource& other); 00064 TripleSource* intersect(const TripleSource& other, int max=-1); 00065 TripleSource* diff(const TripleSource& other, int max=-1); 00066 00067 }; 00068 00069 STANDARD_EXTERNAL(QueryablePool) 00070 00071 #endif /* DEV_W3_ORG__2001_BLINDFOLD_SRC_QUERYABLEPOOL_H */ // -*-C++-*-