ROOT logo
#ifndef __TMrbLofMacros_h__
#define __TMrbLofMacros_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           utils/inc/TMrbLofMacros.h
// Purpose:        Define utilities to be used with MARaBOU
// Classes:        TMrbLofMacros     -- a list of root macros
// Description:    Common class definitions to be used within MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbLofMacros.h,v 1.15 2008-08-18 08:18:57 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

#include "Rtypes.h"
#include "TString.h"
#include "TSystem.h"
#include "TObjArray.h"
#include "TMrbNamedX.h"
#include "TMrbLofNamedX.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbLofMacros
// Purpose:        Manage a list of root macros
// Description:    Stores a list of macros.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbLofMacros: public TMrbLofNamedX {

	public:
		enum EMrbMacroEnvNames	{	kMrbMacroName,  		
									kMrbMacroTitle, 		
									kMrbMacroAuthor, 		
									kMrbMacroKeyWords, 		
									kMrbMacroPath, 			
									kMrbMacroWidth, 		
									kMrbMacroAclic, 		
									kMrbMacroModify, 		
									kMrbMacroGuiPtrMode, 		
									kMrbMacroUserStart, 		
									kMrbMacroRcFile, 		
									kMrbMacroNofArgs, 		
									kMrbMacroArgName, 		
									kMrbMacroArgTitle,  	
									kMrbMacroArgType, 		
									kMrbMacroArgEntryType, 	
									kMrbMacroArgNofEntryFields, 	
									kMrbMacroArgEntryWidth, 
									kMrbMacroArgDefaultValue, 
									kMrbMacroArgValues, 	
									kMrbMacroArgAddLofValues, 	
									kMrbMacroArgLowerLimit, 
									kMrbMacroArgUpperLimit, 
									kMrbMacroArgIncrement, 	
									kMrbMacroArgBase, 		
									kMrbMacroArgPrecision, 		
									kMrbMacroArgOrientation,
									kMrbMacroArgNofCL,
									kMrbMacroArgExecFunct,
									kMrbMacroArgState	
								};

	public:
		TMrbLofMacros();					 							// default ctor
		TMrbLofMacros(const Char_t * Path); 							// ctor
		~TMrbLofMacros() { this->Delete(); };							// dtor: delete heap objects

		inline void SetPath(const Char_t * Path) { fPath = Path; gSystem->ExpandPathName(fPath); };	// define search path
		inline const Char_t * GetPath() const { return(fPath); };

		Bool_t AddMacro(const Char_t * MacroName, const Char_t * KeyWords = NULL); 	// add macro
		Bool_t AskForArgs(const Char_t * /*MacroName*/) const {return kTRUE;};		// interactively ask for macro args

		inline TMrbNamedX * FirstMacro() const { return((TMrbNamedX *) First()); };		// loop thru list of macros
		inline TMrbNamedX * NextMacro(TMrbNamedX * LastL) const { return((TMrbNamedX *) After(LastL)); };

		inline TMrbLofNamedX * GetLofEnvNames() { return(&fLofEnvNames); }; 		// list of legal environment names
		Bool_t CheckEnvName(const Char_t * EnvName, Bool_t IsArgEnv = kTRUE) const;		// check env name

		inline TObjArray * GetLofFilePatterns() { return(&fLofFilePatterns); };

		void PrintMacro(const Char_t * MacroName = "") const ;					// print macro

		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	protected:
		TMrbNamedX * ProcessMacro(const Char_t * MacroPath, const Char_t * MdefPath = NULL, Bool_t TestFormat = kTRUE);
		Bool_t CheckMacro(TMrbNamedX * Macro) const;
		Bool_t CheckKey(TMrbNamedX * Macro, const Char_t * Key) const;

	protected:
		TString fPath;
		TObjArray fLofFilePatterns;
		TMrbLofNamedX fLofEnvNames;

	ClassDef(TMrbLofMacros, 1)		// [Utils] A list of ROOT macros
};

#endif
 TMrbLofMacros.h:1
 TMrbLofMacros.h:2
 TMrbLofMacros.h:3
 TMrbLofMacros.h:4
 TMrbLofMacros.h:5
 TMrbLofMacros.h:6
 TMrbLofMacros.h:7
 TMrbLofMacros.h:8
 TMrbLofMacros.h:9
 TMrbLofMacros.h:10
 TMrbLofMacros.h:11
 TMrbLofMacros.h:12
 TMrbLofMacros.h:13
 TMrbLofMacros.h:14
 TMrbLofMacros.h:15
 TMrbLofMacros.h:16
 TMrbLofMacros.h:17
 TMrbLofMacros.h:18
 TMrbLofMacros.h:19
 TMrbLofMacros.h:20
 TMrbLofMacros.h:21
 TMrbLofMacros.h:22
 TMrbLofMacros.h:23
 TMrbLofMacros.h:24
 TMrbLofMacros.h:25
 TMrbLofMacros.h:26
 TMrbLofMacros.h:27
 TMrbLofMacros.h:28
 TMrbLofMacros.h:29
 TMrbLofMacros.h:30
 TMrbLofMacros.h:31
 TMrbLofMacros.h:32
 TMrbLofMacros.h:33
 TMrbLofMacros.h:34
 TMrbLofMacros.h:35
 TMrbLofMacros.h:36
 TMrbLofMacros.h:37
 TMrbLofMacros.h:38
 TMrbLofMacros.h:39
 TMrbLofMacros.h:40
 TMrbLofMacros.h:41
 TMrbLofMacros.h:42
 TMrbLofMacros.h:43
 TMrbLofMacros.h:44
 TMrbLofMacros.h:45
 TMrbLofMacros.h:46
 TMrbLofMacros.h:47
 TMrbLofMacros.h:48
 TMrbLofMacros.h:49
 TMrbLofMacros.h:50
 TMrbLofMacros.h:51
 TMrbLofMacros.h:52
 TMrbLofMacros.h:53
 TMrbLofMacros.h:54
 TMrbLofMacros.h:55
 TMrbLofMacros.h:56
 TMrbLofMacros.h:57
 TMrbLofMacros.h:58
 TMrbLofMacros.h:59
 TMrbLofMacros.h:60
 TMrbLofMacros.h:61
 TMrbLofMacros.h:62
 TMrbLofMacros.h:63
 TMrbLofMacros.h:64
 TMrbLofMacros.h:65
 TMrbLofMacros.h:66
 TMrbLofMacros.h:67
 TMrbLofMacros.h:68
 TMrbLofMacros.h:69
 TMrbLofMacros.h:70
 TMrbLofMacros.h:71
 TMrbLofMacros.h:72
 TMrbLofMacros.h:73
 TMrbLofMacros.h:74
 TMrbLofMacros.h:75
 TMrbLofMacros.h:76
 TMrbLofMacros.h:77
 TMrbLofMacros.h:78
 TMrbLofMacros.h:79
 TMrbLofMacros.h:80
 TMrbLofMacros.h:81
 TMrbLofMacros.h:82
 TMrbLofMacros.h:83
 TMrbLofMacros.h:84
 TMrbLofMacros.h:85
 TMrbLofMacros.h:86
 TMrbLofMacros.h:87
 TMrbLofMacros.h:88
 TMrbLofMacros.h:89
 TMrbLofMacros.h:90
 TMrbLofMacros.h:91
 TMrbLofMacros.h:92
 TMrbLofMacros.h:93
 TMrbLofMacros.h:94
 TMrbLofMacros.h:95
 TMrbLofMacros.h:96
 TMrbLofMacros.h:97
 TMrbLofMacros.h:98
 TMrbLofMacros.h:99
 TMrbLofMacros.h:100
 TMrbLofMacros.h:101
 TMrbLofMacros.h:102