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 _CQMULTIPLE
00025 #define _CQMULTIPLE
00026 #include "libMRML/include/uses-declarations.h"
00027
00028
00029
00049 #include <memory>
00050 #include <map>
00051 #include <list>
00052 #include "libMRML/include/CQuery.h"
00053 #include "libMRML/include/CSelfDestroyPointer.h"
00054 #include "libMRML/include/CIDRelevanceLevelPairList.h"
00055 #include "libMRML/include/CRelevanceLevelList.h"
00056
00057
00058
00059
00060 #include "libMRML/include/CAlgorithm.h"
00061 #include "libMRML/include/CAccessor.h"
00062 #include "libMRML/include/CAccessorAdminCollection.h"
00063 #include "libMRML/include/CAccessorAdmin.h"
00064
00065 #ifdef HAS_HASH_MAP
00066 #include <hash_map>
00067 #else
00068 #define hash_map map
00069 #endif
00070
00071 class CScoreBoard;
00072 class CAccessor;
00073
00074
00116 class CQMultiple:public CQuery{
00117 protected:
00118
00125 void init();
00127 bool mUsesResultURLs;
00128 public:
00134 CQMultiple();
00140 ~CQMultiple();
00145 CQMultiple(CAccessorAdminCollection& inAccessorAdminCollection,
00146 CAlgorithm& inAlgorithm);
00147
00153 static void* doFastQueryThread(void *);
00159 virtual CIDRelevanceLevelPairList* fastQuery(const CXMLElement& inQuery,
00160 int inNumberOfInterestingImages,
00161 double inDifferenceToBest);
00162
00168 static void* doQueryThread(void *);
00174 virtual CXMLElement* query(const CXMLElement& inQuery);
00175
00182 virtual bool setAlgorithm(CAlgorithm& inAlgorithm);
00183 };
00184
00185 #endif
00186