#ifndef __TMrbModuleChannel_h__
#define __TMrbModuleChannel_h__
namespace std {} using namespace std;
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>
#include "Rtypes.h"
#include "TSystem.h"
#include "TNamed.h"
#include "TMrbModule.h"
#include "TMrbSubevent.h"
class TMrbModuleChannel : public TNamed {
public:
enum EMrbHistoMode { kMrbHasHistogramDefault,
kMrbHasHistogramFalse,
kMrbHasHistogramTrue
};
public:
TMrbModuleChannel() {};
TMrbModuleChannel(TMrbModule * Module, Int_t Addr);
~TMrbModuleChannel() {
fRegSpec.Delete();
};
inline Bool_t MarkUsed(TMrbSubevent * Sevt) {
fIsUsed = kTRUE;
fUsedBy = Sevt;
return(kTRUE);
};
inline Bool_t MarkIndexed(TMrbModuleChannel * Param0) {
fArrayHead = Param0;
fStatus = TMrbConfig::kChannelArrElem;
return(kTRUE);
};
Bool_t Set(const Char_t * RegName, Int_t Value);
Bool_t Set(Int_t RegIndex, Int_t Value);
Int_t Get(const Char_t * RegName) const;
Int_t Get(Int_t RegIndex) const;
Bool_t Set(const Char_t * RegName, const Char_t * Value);
Bool_t Set(Int_t RegIndex, const Char_t * Value);
inline Bool_t HasRegisters() const { return(fRegSpec.GetEntriesFast() > 0); };
inline Int_t GetAddr() const { return(fAddr); };
inline TMrbSubevent * UsedBy() const { return(fUsedBy); };
inline TMrbModule * Parent() const { return(fParent); };
inline TMrbModuleChannel * ArrayHead() const { return(fArrayHead); };
inline Int_t GetIndexRange() const { return(fIndexRange); };
inline void SetIndexRange(Int_t Range) { fIndexRange = Range; };
inline TMrbConfig::EMrbChannelStatus GetStatus() const { return(fStatus); };
inline void SetStatus(TMrbConfig::EMrbChannelStatus Status) { fStatus = Status; };
Int_t GetIndex() const;
Bool_t SetHeadName(const Char_t * HeadName);
const Char_t * GetHeadName() const;
inline void SetOffset(Int_t Offset) { fOffset = Offset; };
inline Int_t GetOffset() const { return(fOffset); };
inline Bool_t IsUsed() const { return(fIsUsed); };
inline EMrbHistoMode GetHistoMode() const { return(fHistoMode); };
inline void SetHistoMode(EMrbHistoMode HistoMode) { fHistoMode = HistoMode; };
void Print(Option_t * Option) const { TObject::Print(Option); }
virtual void Print(ostream & OutStrm, Bool_t ArrayFlag, Bool_t SevtFlag, const Char_t * Prefix = "") {};
inline void Print() { Print(cout, kFALSE, kFALSE, ""); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
TMrbModule * fParent;
TMrbSubevent * fUsedBy;
TMrbModuleChannel * fArrayHead;
Int_t fIndexRange;
TMrbConfig::EMrbChannelStatus fStatus;
TString fHeadName;
Int_t fAddr;
Int_t fOffset;
Bool_t fIsUsed;
EMrbHistoMode fHistoMode;
TObjArray fRegSpec;
ClassDef(TMrbModuleChannel, 1)
};
#endif