00001
00002 #ifndef _CQUERYTREENODE
00003 #define _CQUERYTREENODE
00004 #include "libMRML/include/uses-declarations.h"
00005 #include "libMRML/include/CQuery.h"
00006
00007 #ifdef LINK_DYNAMICALLY
00008 #include "libMRML/include/CDynamicQueryFactory.h"
00009 #else
00010 #include "libMRML/include/CStaticQueryFactory.h"
00011 #endif
00012
00013 #include "libMRML/include/CSelfDestroyPointer.h"
00014 #include "libMRML/include/CMagic.h"
00015
00016 class CXMLElement;
00017 class CAlgorithm;
00018 class CStaticQueryFactory;
00019
00024 class CQueryTreeNode:public CMagic{
00028 typedef list<pair<CQueryTreeNode*,double> > CChildren;
00030 CChildren mChildren;
00035 CQuery* mContent;
00039 CAlgorithm* mAlgorithm;
00040 public:
00042 CQueryTreeNode();
00044 ~CQueryTreeNode();
00048 void configure(CXMLElement& inAlgorithm,
00049 CAccessorAdminCollection& inAccessors,
00050 CStaticQueryFactory& inBaseTypeFactory);
00056 virtual CXMLElement* query(const CXMLElement& inQuery);
00063 virtual CIDRelevanceLevelPairList* fastQuery(const CXMLElement& inQuery,
00064 int inNumberOfInterestingImages,
00065 double inDifferenceToBest);
00072 void addChild(CQueryTreeNode* inChild,
00073 double inWeight=1);
00074
00075 };
00076
00077 #endif