72 fIndices = new UShort_t[fN];
73 for (Int_t i=0; i<fN; i++)
74 fIndices[i] = eblock.fIndices[i];
100 if (
this != &eblock) {
130 Error(
"Enter",
"illegal entry value!");
142 Int_t j = entry & 15;
168 Error(
"Remove",
"Illegal entry value!\n");
173 Int_t j = entry & 15;
196 Error(
"Contains",
"Illegal entry value!\n");
204 Int_t j = entry & 15;
262 if (block->
fType == 0){
280 for (j=0; j<block->
fIndices[0]; j++)
282 for (i=0; i<block->
fNPassed-1; i++){
300 if (block->
fType==1){
310 while (elpos < en &&
fIndices[i] > elst[elpos]) {
311 newlist[newpos] = elst[elpos];
315 if (
fIndices[i] == elst[elpos]) elpos++;
320 newlist[newpos] = elst[elpos];
334 Int_t newpos, current;
335 newpos = current = 0;
339 newlist[newpos] =
fIndices[current];
343 if (
fIndices[current]==i) current++;
348 newlist[newpos] =
fIndices[current];
391 while (entries_found<entry+1){
392 if (j==15){i++; j=0;}
415 if (entries_found==entry+1){
423 if (entries_found==entry+1){
431 if (entries_found==entry+1){
463 if (j==15) {j=0; i++;}
514 printf(
"%d\n", i+shift);
524 printf(
"%d\n", i+shift);
528 printf(
"%d\n", i+shift);
532 printf(
"%d\n", j+shift);
536 printf(
"%d\n", j+shift);
548 if (
fType!=0)
return;
600 indexnew[ibite] |= 1<<ibit;
608 indexnew[ibite] ^= 1<<ibit;
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short)
int Int_t
Signed integer 4 bytes (int)
const char Option_t
Option string (const char)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Int_t fLastIndexQueried
! to optimize GetEntry() in a loop
void OptimizeStorage()
If there are < kBlockSize or >kBlockSize*15 entries, change to an array representation.
bool Remove(Int_t entry)
Remove entry #entry If the block has already been optimized and the entries are stored as a list and ...
Int_t Next()
Return the next non-zero entry Faster than GetEntry() function.
TEntryListBlock & operator=(const TEntryListBlock &rhs)
Int_t fType
0 - bits, 1 - list
Int_t fNPassed
number of entries in the entry list (if fPassing=0 - number of entries not in the entry list
bool Enter(Int_t entry)
If the block has already been optimized and the entries are stored as a list and not as bits,...
bool fPassing
1 - stores entries that belong to the list 0 - stores entries that don't belong to the list
Int_t GetNPassed()
Returns the number of entries, passing the selection.
void Transform(bool dir, UShort_t *indexnew)
Transform the existing fIndices.
void PrintWithShift(Int_t shift) const
Print the indices of this block + shift (used from TEntryList::Print()) to print the current values.
~TEntryListBlock() override
Destructor.
Int_t fN
size of fIndices for I/O =fNPassed for list, fBlockSize for bits
Int_t fLastIndexReturned
! to optimize GetEntry() in a loop
UShort_t fCurrent
! to fasten Contains() in list mode
TEntryListBlock()
Default c-tor.
Int_t Contains(Int_t entry)
True if the block contains entry #entry.
Int_t GetEntry(Int_t entry)
Return entry #entry.
void Print(const Option_t *option="") const override
Print the entries in this block.
Int_t Merge(TEntryListBlock *block)
Merge with the other block Returns the resulting number of entries in the block.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TObject()
TObject constructor.
void ToUpper()
Change string to upper case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const