00001 00002 // 00003 // CLASS AlephAbstractInteractiveFunction 00004 // Abstract class for interactive commands 00005 // 00006 // Author : C. Delaere 00007 // 00009 00010 #ifndef _ALEPHABSTRACTINTERACTIVEFUNCTION_H_ 00011 #define _ALEPHABSTRACTINTERACTIVEFUNCTION_H_ 00012 00013 #include <vector> 00014 #include <utility> 00015 #include <string> 00016 #include <iostream> 00017 00018 #include "AlephInteractiveHandler.h" 00019 00020 class AlephAbstractInteractiveFunction 00021 { 00022 public: 00023 AlephAbstractInteractiveFunction() {cerr << "AlephAbstractInteractiveFunction: default constructor should not be used..." << endl;} 00024 AlephAbstractInteractiveFunction(AlephInteractiveHandler* ptr) {theHandler=ptr;} 00025 virtual ~AlephAbstractInteractiveFunction() {} 00026 virtual string Name() = 0; 00027 virtual int Code() = 0; 00028 virtual void Run(vector<float>& options,AlphaBanks& EventInfo) = 0; 00029 virtual vector<pair<string,float> > OptionsList() = 0; 00030 protected: 00031 void SendMessage(int code, vector<float>& options, string comment) { theHandler->SendMessage(code,options,comment);} 00032 private: 00033 AlephInteractiveHandler* theHandler; 00034 }; 00035 00036 #endif