Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

JobCPathModule.h

Go to the documentation of this file.
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

Generated on Mon Feb 15 11:06:49 2010 for loon by  doxygen 1.3.9.1