ROOT logo
#ifndef __HBITMAN_H__
#define __HBITMAN_H__

#include "TObject.h"
#include "TString.h"

#include <vector>
#include <map>

class HBitMan : public TObject {

protected:

    typedef struct {
	TString name;                        // lable of the word
	Int_t offset;                        // offset in bits in word
	Int_t width ;                        // width in bits
	Bool_t sign ;                        // kTRUE if highest bit in word is sign bit
    } word;

    std::vector < word > list;               //!
    std::map < TString, word> wordmap;       //!


public:


    HBitMan();
    ~HBitMan();


    //-----------------------------------------------------------
    // direct bit setting
    static void   printBits(UInt_t data);
    static void   setBit   (UInt_t &data,Int_t bit);
    static void   unsetBit (UInt_t &data,Int_t bit);
    static Bool_t getBit   (UInt_t &data,Int_t bit);

    static void   setWord  (UInt_t &data,Int_t num,Int_t width, Int_t val,Bool_t sign=kFALSE);
    static void   unsetWord(UInt_t &data,Int_t num,Int_t width);
    Int_t         getWord  (UInt_t &data,Int_t num,Int_t width,Bool_t sign=kFALSE);
    //-----------------------------------------------------------

    //-----------------------------------------------------------
    // bit setting using names
    void          createWord(const TString name,Int_t width, Bool_t sign=kFALSE);
    void          init();

    void          setWord  (UInt_t &data,const TString name,Int_t val);
    void          unsetWord(UInt_t &data,const TString name);
    Int_t         getWord  (UInt_t &data,const TString name);
    //-----------------------------------------------------------

    ClassDef(HBitMan,0)

};


#endif //__HBITMAN_H__
 hbitman.h:1
 hbitman.h:2
 hbitman.h:3
 hbitman.h:4
 hbitman.h:5
 hbitman.h:6
 hbitman.h:7
 hbitman.h:8
 hbitman.h:9
 hbitman.h:10
 hbitman.h:11
 hbitman.h:12
 hbitman.h:13
 hbitman.h:14
 hbitman.h:15
 hbitman.h:16
 hbitman.h:17
 hbitman.h:18
 hbitman.h:19
 hbitman.h:20
 hbitman.h:21
 hbitman.h:22
 hbitman.h:23
 hbitman.h:24
 hbitman.h:25
 hbitman.h:26
 hbitman.h:27
 hbitman.h:28
 hbitman.h:29
 hbitman.h:30
 hbitman.h:31
 hbitman.h:32
 hbitman.h:33
 hbitman.h:34
 hbitman.h:35
 hbitman.h:36
 hbitman.h:37
 hbitman.h:38
 hbitman.h:39
 hbitman.h:40
 hbitman.h:41
 hbitman.h:42
 hbitman.h:43
 hbitman.h:44
 hbitman.h:45
 hbitman.h:46
 hbitman.h:47
 hbitman.h:48
 hbitman.h:49
 hbitman.h:50
 hbitman.h:51
 hbitman.h:52
 hbitman.h:53
 hbitman.h:54
 hbitman.h:55
 hbitman.h:56
 hbitman.h:57
 hbitman.h:58
 hbitman.h:59