00001 // -*- mode: c++ -*- 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