00001 00002 // $Id: JobCPathModule.h,v 1.23 2007/01/28 01:59:26 rhatcher Exp $ 00003 // 00004 // A job module for handling creation of path and modules 00005 // 00006 // messier@huhepl.harvard.edu 00008 #ifndef JOBCPATHMODULE_H 00009 #define JOBCPATHMODULE_H 00010 #ifndef VECTOR 00011 #include <vector> 00012 #define VECTOR 00013 #endif 00014 #ifdef SITE_HAS_SIGC 00015 # ifndef __CINT__ 00016 # ifndef SIGNAL_H 00017 # include "sigc++/signal.h" 00018 # define SIGNAL_H 00019 # endif 00020 # endif 00021 #endif 00022 #ifndef JOBCMODULE_H 00023 #include "JobControl/JobCModule.h" 00024 #endif 00025 #ifndef JOBCPATH 00026 #include "JobControl/JobCPath.h" 00027 #endif 00028 #ifndef ROOT_Rtypes 00029 #if !defined(__CINT__) || defined(__MAKECINT__) 00030 #include "Rtypes.h" // Needed for ClassDef and ClassImp macros 00031 #endif 00032 #endif 00033 00034 class JobCModule; 00035 class JobCommand; 00036 class MomNavigator; 00037 class JobCInputModule; 00038 class JobCPathRegistry; 00039 00040 class JobCPathModule : public JobCModule 00041 { 00042 public: 00043 JobCPathModule(); 00044 JobCPathModule(MomNavigator* mom, JobCInputModule* input); 00045 virtual ~JobCPathModule(); 00046 00047 // These are the methods I expect people will use in root macros 00048 JobCPath& Create(const char* path, const char* nodes=""); 00049 void Delete(const char* path); 00050 void Add(const char* path, const char* nodes, int n=-1); 00051 void Remove(); 00052 void Attach(const char* pathA, const char* pathB); 00053 void Detach(const char* pathA, const char* pathB); 00054 void Help(); 00055 void Report(); 00056 void Reset(); 00057 JobCPath& operator()(const char* path); 00058 00059 // These I expect will only be used internally 00060 const JobCPathRegistry* GetPathRegistry() const { return fPathRegistry; } 00061 00062 void HandleCommand(JobCommand *cmd); 00063 void SetPathRegistry(JobCPathRegistry *pr); 00064 void SetMom(MomNavigator* mom) { fMom = mom; } 00065 void SetInput(JobCInputModule* inp) { fInput = inp; } 00066 00067 #ifndef __CINT__ 00068 # ifdef SITE_HAS_SIGC 00069 public: 00070 // Signal when a new path is made 00071 SigC::Signal1<void,JobCPath*> SigNewPath; 00072 # endif 00073 private: 00074 public: //rwh for ROOT 2007-01-26 00075 // SigC::Signal1 derives from SignalBase which has a private operator= 00076 // CINT attempts to generate explicit assignment unless told not to do so 00077 JobCPathModule& operator= (const JobCPathModule&) { abort(); return *this; } // no assignment 00078 #endif 00079 00080 private: 00081 MomNavigator* fMom; // Pointer to "the event" data 00082 JobCInputModule* fInput; // Input module 00083 JobCPathRegistry* fPathRegistry; // The registry of paths 00084 JobCPath* fDummyPath; // Dummy path used for failed look ups 00085 00086 ClassDef(JobCPathModule,0) // a job module for handling paths and modules 00087 }; 00088 00089 #endif // JOBCPATHMODULE_H
1.3.9.1