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 _CALGORITHMCOLLECTION
00025
#define _CALGORITHMCOLLECTION
00026
#include "libMRML/include/uses-declarations.h"
00027
#include <string>
00028
#include <map>
00029
#include "libMRML/include/CAlgorithm.h"
00030
#ifdef LINK_DYNAMICALLY
00031
#include "libMRML/include/CStaticQueryFactory.h"
00032
#else
00033
#include "libMRML/include/CDynamicQueryFactory.h"
00034
#endif
00035
#include "libMRML/include/CXMLElement.h"
00036
00037
class CAccessorAdminCollection;
00038
00039
00056 class CAlgorithmCollection:
public CStaticQueryFactory{
00057
protected:
00059 CAlgorithm*
mAlgorithmInConstruction;
00063
protected:
00064 typedef map<string,CAlgorithm*>
CContent;
00065
00068
CContent mContent;
00070 CContent::const_iterator
begin()const;
00072
CContent::const_iterator end()const;
00073 public:
00074
00078
CAlgorithm* getAlgorithmInConstruction();
00079
00082
void startAlgorithmConstruction(
CAlgorithm* inAlgorithm);
00084
CAlgorithmCollection(string inConfigFileName);
00087 ~
CAlgorithmCollection();
00089
void addAlgorithm(
CAlgorithm* inAlgorithm);
00093
CAlgorithm& getAlgorithmByType(const string& inType)const;
00097
bool containsAlgorithmByType(const string& inType)const;
00104
CAlgorithm* makeAlgorithmByType(const string& inType)const;
00105
00110
CAlgorithm* getDefaultAlgorithm()const;
00111
00114
CAlgorithm* makeDefaultAlgorithm()const;
00115
00120
CXMLElement* getAlgorithmList(const
CXMLElement& inGetAlgorithms)const;
00121
00124 string toXML(
bool inIsPrivate=false)const;
00128
CXMLElement* toXMLElement()const;
00130
CQuery* makeQuery(const string & inBaseType,
00131
CAccessorAdminCollection & inAccessorAdminCollection,
00132
CAlgorithm & inAlgorithm,
00133
CStaticQueryFactory& inFactory);
00134
00135 };
00136 #endif