00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#include "libMRML/include/CAccessorElement.h"
00026
#include "libMRML/include/CXMLElement.h"
00048
#ifndef _CQUERY
00049
#define _CQUERY
00050
#include "libMRML/include/uses-declarations.h"
00051
#include <memory>
00052
#include <map>
00053
#include "libMRML/include/CSelfDestroyPointer.h"
00054
#include "libMRML/include/CIDRelevanceLevelPairList.h"
00055
#include "libMRML/include/CXMLElement.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
#include "libMRML/include/CMagic.h"
00065
00066
class CScoreBoard;
00067
class CAccessor;
00068
00069
00071 class CQuery:
public CMagic{
00072
00073
protected:
00079 CAccessor*
mAccessor;
00084 CAccessorAdmin*
mAccessorAdmin;
00089 CAccessorAdminCollection*
mAccessorAdminCollection;
00090
00091
00096 CAlgorithm*
mAlgorithm;
00097
00101 class lCChild{
00102
public:
00104 CQuery*
mQuery;
00106 double mWeight;
00107 };
00109 typedef list<lCChild>
lCChildren;
00112 lCChildren mChildren;
00113
00114
00115
00116
protected:
00122
virtual void init()=0;
00123
00124
public:
00130
CQuery();
00136
virtual ~CQuery();
00149
CQuery(
CAccessorAdminCollection& inAccessorAdminCollection,
00150
CAlgorithm& inAlgorithm);
00151
00157
void addChild(
CQuery* inChild,
00158
double inWeight=1);
00159
00160
00166
virtual CXMLElement*
query(
const CXMLElement& inQuery);
00167
00174
virtual CIDRelevanceLevelPairList*
fastQuery(
const CXMLElement& inQuery,
00175
int inNumberOfInterestingImages,
00176
double inDifferenceToBest)=0;
00177
00183
virtual CXMLElement*
getRandomImages(
int inNumberOfInterestingImages)
const;
00189
virtual CIDRelevanceLevelPairList*
getRandomIDs(
int inNumberOfInterestingImages)
const;
00195
virtual list<TID>*
getAllIDs()const;
00201 virtual list<
CAccessorElement>* getAllAccessorElements()const;
00208 virtual
bool setAlgorithm(
CAlgorithm& inAlgorithm);
00215 const
CAlgorithm& getAlgorithm()const;
00216
00224 virtual
void finishInit();
00225
00226 };
00227
00228 #endif
00229