1 | #ifndef MARS_MTaskInteractive
|
---|
2 | #define MARS_MTaskInteractive
|
---|
3 |
|
---|
4 | #ifndef MARS_MTask
|
---|
5 | #include "MTask.h"
|
---|
6 | #endif
|
---|
7 |
|
---|
8 | class MFilter;
|
---|
9 | class MTaskList;
|
---|
10 |
|
---|
11 | class MTaskInteractive : public MTask
|
---|
12 | {
|
---|
13 | private:
|
---|
14 | TMethodCall *fCall[4];
|
---|
15 |
|
---|
16 | Int_t (*fPreProcess)(MParList *list);
|
---|
17 | Int_t (*fProcess)();
|
---|
18 | Int_t (*fPostProcess)();
|
---|
19 | Bool_t (*fReInit)(MParList *list);
|
---|
20 |
|
---|
21 | Int_t PreProcess(MParList *list) { if (fCall[0]) return Return(0, &list); return fPreProcess ? (*fPreProcess)(list) : kTRUE; }
|
---|
22 | Int_t Process() { if (fCall[1]) return Return(1); return fProcess ? (*fProcess)() : kTRUE; }
|
---|
23 | Int_t PostProcess() { if (fCall[2]) return Return(2); return fPostProcess ? (*fPostProcess)() : kTRUE; }
|
---|
24 | Bool_t ReInit(MParList *list) { if (fCall[3]) return Return(3, &list); return fReInit ? (*fReInit)(list) : kTRUE; }
|
---|
25 |
|
---|
26 | Int_t Return(Int_t no, void *param=NULL);
|
---|
27 | Bool_t Set(void *fcn, Int_t no, const char *params);
|
---|
28 | void Free(Int_t no);
|
---|
29 |
|
---|
30 | public:
|
---|
31 | MTaskInteractive(const char *name=NULL, const char *title=NULL);
|
---|
32 | ~MTaskInteractive();
|
---|
33 |
|
---|
34 | // This is to be used in compiled code
|
---|
35 | void SetPreProcess(Int_t (*func)(MParList *list)) { fPreProcess = func; Free(0); }
|
---|
36 | void SetProcess(Int_t (*func)()) { fProcess = func; Free(1); }
|
---|
37 | void SetPostProcess(Int_t (*func)()) { fPostProcess = func; Free(2); }
|
---|
38 | void SetReInit(Bool_t (*func)(MParList *list)) { fReInit = func; Free(3); }
|
---|
39 |
|
---|
40 | // This is for usage in CINT
|
---|
41 | void SetPreProcess(void *fcn) { Set(fcn, 0, "MParList*"); fPreProcess =0; }
|
---|
42 | void SetProcess(void *fcn) { Set(fcn, 1, ""); fProcess =0; }
|
---|
43 | void SetPostProcess(void *fcn) { Set(fcn, 2, ""); fPostProcess=0; }
|
---|
44 | void SetReInit(void *fcn) { Set(fcn, 3, "MParList*"); fReInit =0; }
|
---|
45 |
|
---|
46 | ClassDef(MTaskInteractive, 0) // Interactive task
|
---|
47 | };
|
---|
48 |
|
---|
49 | #endif
|
---|