#ifndef __TMrbCamacRegister_h__
#define __TMrbCamacRegister_h__
namespace std {} using namespace std;
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>
#include "Rtypes.h"
#include "TSystem.h"
#include "TMrbModuleRegister.h"
#include "TMrbCamacModule.h"
#include "TMrbCNAF.h"
class TMrbCamacRegister : public TMrbModuleRegister {
public:
enum EMrbRegCnafBits { kRegGetCnaf = BIT(0),
kRegClearCnaf = BIT(1),
kRegSetCnaf = BIT(2)
};
public:
TMrbCamacRegister() {};
TMrbCamacRegister(TMrbCamacModule * Module, Int_t NofChannels, TMrbNamedX * RegDef,
const Char_t * CnafSet = NULL,
const Char_t * CnafClear = NULL,
const Char_t * CnafGet = NULL,
Int_t InitValue = 0, Int_t LowerLimit = 0, Int_t UpperLimit = -1,
TMrbLofNamedX * BitNames = NULL, Bool_t PatternMode = kFALSE);
~TMrbCamacRegister() {};
inline Bool_t HasCnafs() const { return(fHasCnafs != 0); };
inline Bool_t HasGetCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegGetCnaf) != 0); };
inline Bool_t HasClearCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegClearCnaf) != 0); };
inline Bool_t HasSetCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegSetCnaf) != 0); };
inline TMrbCNAF * CnafSet() { return(&fCnafSet); };
inline TMrbCNAF * CnafClear() { return(&fCnafClear); };
inline TMrbCNAF * CnafGet() { return(&fCnafGet); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
UInt_t fHasCnafs;
TMrbCNAF fCnafSet;
TMrbCNAF fCnafClear;
TMrbCNAF fCnafGet;
ClassDef(TMrbCamacRegister, 1)
};
#endif