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
00026 #ifndef _CQPERL
00027 #define _CQPERL
00028 #include "libGIFTQuPerl/include/uses-declarations.h"
00029 #ifdef __GIFT_WITH_PERL__
00030
00031 #ifdef bool
00032 #undef bool
00033 #define _bool char
00034 #endif
00035
00036 #include <EXTERN.h>
00037 #include <perl.h>
00038 #undef list // perl lists
00039
00040 #include <list>
00041 #include "libMRML/include/CQuery.h"
00042
00043
00048 class CQPerl:public CQuery{
00049 protected:
00053 string mPackage;
00058 SV* mPerlQueryProcessor;
00061 string qualifyFunctionName(const char* inName);
00063 static PerlInterpreter* mPerl;
00064
00071 CXMLElement* callPerl(const CXMLElement* inElement,
00072 string inFunction);
00076 void callConstruct();
00077
00078 public:
00084 CQPerl(CAccessorAdminCollection& inAccessorAdminCollection,
00085 CAlgorithm& inAlgorithm);
00091 CQPerl();
00097 ~CQPerl();
00103 virtual CXMLElement* query(const CXMLElement& inQuery);
00104
00111 virtual CIDRelevanceLevelPairList* fastQuery(const CXMLElement& inQuery,
00112 int inNumberOfInterestingImages,
00113 double inDifferenceToBest);
00114
00120 virtual CXMLElement* getRandomImages(int inNumberOfInterestingImages)const;
00126 virtual CIDRelevanceLevelPairList* getRandomIDs(int inNumberOfInterestingImages)const;
00132 virtual list<TID>* getAllIDs()const;
00138 virtual list<CAccessorElement>* getAllAccessorElements()const;
00139
00145 bool setAlgorithm(CAlgorithm& inAlgorithm);
00146
00147
00154 void init();
00155 };
00156
00157
00158 #endif
00159
00160 #endif