00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MARSYAS_TM_TIMER_MANAGER_H
00020 #define MARSYAS_TM_TIMER_MANAGER_H
00021
00036 #include "TmTimer.h"
00037 #include "common_header.h"
00038
00039 #include <string>
00040 #include <map>
00041 #include <vector>
00042 #include "TmParam.h"
00043
00044
00045
00046 namespace Marsyas
00047 {
00055 struct MakeTimer {
00056 MakeTimer() {}
00057 virtual ~MakeTimer(){}
00058 virtual TmTimer* make(std::string)=0;
00059 };
00060
00061 class TmTimerManager {
00062 std::map<std::string, MakeTimer*> registry_;
00063 static TmTimerManager* instance_;
00064 TmTimerManager();
00065 void addTimers();
00066
00067 public:
00068 static TmTimerManager* getInstance();
00069 virtual ~TmTimerManager();
00070 TmTimer* make(std::string class_name, std::string identifier);
00071 TmTimer* make(std::string class_name, std::string identifier, std::vector<TmParam> params);
00072 };
00073
00074 }
00075
00076 #endif
00077