#ifndef ALIHLTDATADEFLATERSIMPLE_H
#define ALIHLTDATADEFLATERSIMPLE_H
#include "AliHLTDataDeflater.h"
#include <vector>
#include <string>
class AliHLTDataDeflaterSimple : public AliHLTDataDeflater
{
public:
AliHLTDataDeflaterSimple();
~AliHLTDataDeflaterSimple();
class AliHLTDataDeflaterParameter {
public:
AliHLTDataDeflaterParameter()
: fName(), fFullBitLength(0), fReducedBitLength(0)
, fMax(0), fMaxReduced(0)
, fMask(0), fMaskReduced(0)
, fValueCount(0), fBitCount(0) {}
AliHLTDataDeflaterParameter(const char* name, int length, int reduced)
: fName(name), fFullBitLength(length), fReducedBitLength(reduced)
, fMax((((AliHLTUInt64_t)0x1)<<length)-1), fMaxReduced((((AliHLTUInt64_t)0x1)<<reduced)-1)
, fMask(fMax), fMaskReduced(fMaxReduced)
, fValueCount(0), fBitCount(0) {}
AliHLTDataDeflaterParameter(const AliHLTDataDeflaterParameter& src)
: fName(src.fName), fFullBitLength(src.fFullBitLength), fReducedBitLength(src.fReducedBitLength)
, fMax(src.fMax), fMaxReduced(src.fMaxReduced)
, fMask(src.fMask), fMaskReduced(src.fMaskReduced)
, fValueCount(0), fBitCount(0) {}
AliHLTDataDeflaterParameter& operator=(const AliHLTDataDeflaterParameter& src) {
if (this==&src) return *this;
fName=src.fName; fFullBitLength=src.fFullBitLength; fReducedBitLength=src.fReducedBitLength;
fMax=src.fMax; fMaxReduced=src.fMaxReduced;
fMask=src.fMask; fMaskReduced=src.fMaskReduced;
fValueCount=src.fValueCount; fBitCount=src.fBitCount;
return *this;
}
~AliHLTDataDeflaterParameter() {}
const char* GetName() const {return fName.c_str();}
AliHLTUInt64_t Value(const AliHLTUInt64_t& value) const {
return value>fMax?fMax:value;
}
AliHLTUInt32_t ValueLength(const AliHLTUInt64_t& value) const{
return value>fMaxReduced?fFullBitLength:fReducedBitLength;
}
AliHLTUInt32_t SwitchBit(const AliHLTUInt64_t& value) const {
return value>fMaxReduced;
}
const int& GetBitLength() const {return fFullBitLength;}
const int& GetReducedBitLength() const {return fReducedBitLength;}
const AliHLTUInt64_t& GetMax() const {return fMax;}
const AliHLTUInt64_t& GetMaxReduced() const {return fMaxReduced;}
const AliHLTUInt64_t& GetMask() const {return fMask;}
const AliHLTUInt64_t& GetReducedMask() const {return fMaskReduced;}
const AliHLTUInt32_t& GetBitCount() const {return fBitCount;}
const AliHLTUInt32_t& GetValueCount() const {return fValueCount;}
void IncrementBitCount(const AliHLTUInt64_t& value) {
fBitCount+=(value>fMaxReduced?fFullBitLength:fReducedBitLength)+1;
fValueCount++;
}
void ResetBitCount() {fValueCount=0; fBitCount=0;}
void Print(const char* option="") const;
private:
std::string fName;
int fFullBitLength;
int fReducedBitLength;
AliHLTUInt64_t fMax;
AliHLTUInt64_t fMaxReduced;
AliHLTUInt64_t fMask;
AliHLTUInt64_t fMaskReduced;
AliHLTUInt32_t fValueCount;
AliHLTUInt32_t fBitCount;
};
int AddParameterDefinition(const char* name, int bitLength, int reducedBitLength);
virtual bool OutputParameterBits( int parameterId, AliHLTUInt64_t const & value );
virtual void Clear(Option_t * ="");
virtual void Print(Option_t *option="") const;
virtual void Print(ostream& out, Option_t *option="") const;
virtual int GetDeflaterVersion() const {return 1;}
protected:
private:
AliHLTDataDeflaterSimple(const AliHLTDataDeflaterSimple&);
AliHLTDataDeflaterSimple& operator=(const AliHLTDataDeflaterSimple&);
vector<AliHLTDataDeflaterParameter> fParameterDefinitions;
ClassDef(AliHLTDataDeflaterSimple, 0)
};
ostream& operator<<(ostream &out, const AliHLTDataDeflaterSimple& me);
#endif
AliHLTDataDeflaterSimple.h:1 AliHLTDataDeflaterSimple.h:2 AliHLTDataDeflaterSimple.h:3 AliHLTDataDeflaterSimple.h:4 AliHLTDataDeflaterSimple.h:5 AliHLTDataDeflaterSimple.h:6 AliHLTDataDeflaterSimple.h:7 AliHLTDataDeflaterSimple.h:8 AliHLTDataDeflaterSimple.h:9 AliHLTDataDeflaterSimple.h:10 AliHLTDataDeflaterSimple.h:11 AliHLTDataDeflaterSimple.h:12 AliHLTDataDeflaterSimple.h:13 AliHLTDataDeflaterSimple.h:14 AliHLTDataDeflaterSimple.h:15 AliHLTDataDeflaterSimple.h:16 AliHLTDataDeflaterSimple.h:17 AliHLTDataDeflaterSimple.h:18 AliHLTDataDeflaterSimple.h:19 AliHLTDataDeflaterSimple.h:20 AliHLTDataDeflaterSimple.h:21 AliHLTDataDeflaterSimple.h:22 AliHLTDataDeflaterSimple.h:23 AliHLTDataDeflaterSimple.h:24 AliHLTDataDeflaterSimple.h:25 AliHLTDataDeflaterSimple.h:26 AliHLTDataDeflaterSimple.h:27 AliHLTDataDeflaterSimple.h:28 AliHLTDataDeflaterSimple.h:29 AliHLTDataDeflaterSimple.h:30 AliHLTDataDeflaterSimple.h:31 AliHLTDataDeflaterSimple.h:32 AliHLTDataDeflaterSimple.h:33 AliHLTDataDeflaterSimple.h:34 AliHLTDataDeflaterSimple.h:35 AliHLTDataDeflaterSimple.h:36 AliHLTDataDeflaterSimple.h:37 AliHLTDataDeflaterSimple.h:38 AliHLTDataDeflaterSimple.h:39 AliHLTDataDeflaterSimple.h:40 AliHLTDataDeflaterSimple.h:41 AliHLTDataDeflaterSimple.h:42 AliHLTDataDeflaterSimple.h:43 AliHLTDataDeflaterSimple.h:44 AliHLTDataDeflaterSimple.h:45 AliHLTDataDeflaterSimple.h:46 AliHLTDataDeflaterSimple.h:47 AliHLTDataDeflaterSimple.h:48 AliHLTDataDeflaterSimple.h:49 AliHLTDataDeflaterSimple.h:50 AliHLTDataDeflaterSimple.h:51 AliHLTDataDeflaterSimple.h:52 AliHLTDataDeflaterSimple.h:53 AliHLTDataDeflaterSimple.h:54 AliHLTDataDeflaterSimple.h:55 AliHLTDataDeflaterSimple.h:56 AliHLTDataDeflaterSimple.h:57 AliHLTDataDeflaterSimple.h:58 AliHLTDataDeflaterSimple.h:59 AliHLTDataDeflaterSimple.h:60 AliHLTDataDeflaterSimple.h:61 AliHLTDataDeflaterSimple.h:62 AliHLTDataDeflaterSimple.h:63 AliHLTDataDeflaterSimple.h:64 AliHLTDataDeflaterSimple.h:65 AliHLTDataDeflaterSimple.h:66 AliHLTDataDeflaterSimple.h:67 AliHLTDataDeflaterSimple.h:68 AliHLTDataDeflaterSimple.h:69 AliHLTDataDeflaterSimple.h:70 AliHLTDataDeflaterSimple.h:71 AliHLTDataDeflaterSimple.h:72 AliHLTDataDeflaterSimple.h:73 AliHLTDataDeflaterSimple.h:74 AliHLTDataDeflaterSimple.h:75 AliHLTDataDeflaterSimple.h:76 AliHLTDataDeflaterSimple.h:77 AliHLTDataDeflaterSimple.h:78 AliHLTDataDeflaterSimple.h:79 AliHLTDataDeflaterSimple.h:80 AliHLTDataDeflaterSimple.h:81 AliHLTDataDeflaterSimple.h:82 AliHLTDataDeflaterSimple.h:83 AliHLTDataDeflaterSimple.h:84 AliHLTDataDeflaterSimple.h:85 AliHLTDataDeflaterSimple.h:86 AliHLTDataDeflaterSimple.h:87 AliHLTDataDeflaterSimple.h:88 AliHLTDataDeflaterSimple.h:89 AliHLTDataDeflaterSimple.h:90 AliHLTDataDeflaterSimple.h:91 AliHLTDataDeflaterSimple.h:92 AliHLTDataDeflaterSimple.h:93 AliHLTDataDeflaterSimple.h:94 AliHLTDataDeflaterSimple.h:95 AliHLTDataDeflaterSimple.h:96 AliHLTDataDeflaterSimple.h:97 AliHLTDataDeflaterSimple.h:98 AliHLTDataDeflaterSimple.h:99 AliHLTDataDeflaterSimple.h:100 AliHLTDataDeflaterSimple.h:101 AliHLTDataDeflaterSimple.h:102 AliHLTDataDeflaterSimple.h:103 AliHLTDataDeflaterSimple.h:104 AliHLTDataDeflaterSimple.h:105 AliHLTDataDeflaterSimple.h:106 AliHLTDataDeflaterSimple.h:107 AliHLTDataDeflaterSimple.h:108 AliHLTDataDeflaterSimple.h:109 AliHLTDataDeflaterSimple.h:110 AliHLTDataDeflaterSimple.h:111 AliHLTDataDeflaterSimple.h:112 AliHLTDataDeflaterSimple.h:113 AliHLTDataDeflaterSimple.h:114 AliHLTDataDeflaterSimple.h:115 AliHLTDataDeflaterSimple.h:116 AliHLTDataDeflaterSimple.h:117 AliHLTDataDeflaterSimple.h:118 AliHLTDataDeflaterSimple.h:119 AliHLTDataDeflaterSimple.h:120 AliHLTDataDeflaterSimple.h:121 AliHLTDataDeflaterSimple.h:122 AliHLTDataDeflaterSimple.h:123 AliHLTDataDeflaterSimple.h:124 AliHLTDataDeflaterSimple.h:125 AliHLTDataDeflaterSimple.h:126 AliHLTDataDeflaterSimple.h:127 AliHLTDataDeflaterSimple.h:128 AliHLTDataDeflaterSimple.h:129 AliHLTDataDeflaterSimple.h:130 AliHLTDataDeflaterSimple.h:131 AliHLTDataDeflaterSimple.h:132 AliHLTDataDeflaterSimple.h:133 AliHLTDataDeflaterSimple.h:134 AliHLTDataDeflaterSimple.h:135 AliHLTDataDeflaterSimple.h:136 AliHLTDataDeflaterSimple.h:137 AliHLTDataDeflaterSimple.h:138 AliHLTDataDeflaterSimple.h:139 AliHLTDataDeflaterSimple.h:140 AliHLTDataDeflaterSimple.h:141