00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _CQPARALLEL
00025 #define _CQPARALLEL
00026 #include "libMRML/include/uses-declarations.h"
00027 #include "libMRML/include/CQuery.h"
00028 #include "libMRML/include/CSelfDestroyPointer.h"
00029
00049 #include <memory>
00050 #include <map>
00051 #include <list>
00052 #include "libMRML/include/CSelfDestroyPointer.h"
00053 #include "libMRML/include/CIDRelevanceLevelPairList.h"
00054 #include "libMRML/include/CRelevanceLevelList.h"
00055
00056
00057
00058
00059 #include "libMRML/include/CAlgorithm.h"
00060 #include "libMRML/include/CAccessor.h"
00061 #include "libMRML/include/CAccessorAdminCollection.h"
00062 #include "libMRML/include/CAccessorAdmin.h"
00063
00064
00065 class CScoreBoard;
00066 class CAccessor;
00067
00068
00092 class CQParallel:public CQuery{
00093
00097 CAccessorAdminCollection& mAccessorAdminCollection;
00098
00100 class lCLocalAccessor{
00101 public:
00103 CAccessor* mAccessor;
00105 CAccessorAdmin* mAccessorAdmin;
00107 list<lCChildren::iterator> mUsedBy;
00109 CSelfDestroyPointer<map<TID,double> > mUnifiedResults;
00111 double mWeightedSum;
00114 lCLocalAccessor();
00118 ~lCLocalAccessor();
00119 };
00120
00121
00136 class lCLocalAccessorMap:public map<string,lCLocalAccessor>{
00137 public:
00138 };
00141 lCLocalAccessorMap mAccessors;
00142
00143
00144 protected:
00150 virtual void init();
00151
00152 public:
00158 ~CQParallel();
00163 CQParallel(CAccessorAdminCollection& inAccessorAdminCollection,
00164 CAlgorithm& inAlgorithm);
00165
00174 virtual CXMLElement* query(const CXMLElement& inQuery,
00175 int inNumberOfInterestingImages,
00176 double inDifferenceToBest);
00177
00189 virtual CIDRelevanceLevelPairList* fastQuery(const CXMLElement& inQuery,
00190 int inNumberOfInterestingImages,
00191 double inDifferenceToBest);
00192
00198 virtual CXMLElement* getRandomImages(int inNumberOfInterestingImages)const;
00204 virtual list<TID>* getAllIDs()const;
00210 virtual list<string>* getAllURLs()const;
00216 virtual list<pair<TID,string> >* getAllIDURLPairs()const;
00217
00224 virtual bool setAlgorithm(CAlgorithm& inAlgorithm);
00225
00237 void finishInit();
00238
00239 };
00240
00241 #endif
00242
00243
00244