16#ifndef ALICEO2_RANGEREFERENCE_H
17#define ALICEO2_RANGEREFERENCE_H
28template <
typename FirstEntry =
int,
typename NElem =
int>
36 GPUd()
void set(FirstEntry ent, NElem
n)
42 GPUd() FirstEntry getFirstEntry()
const {
return mFirstEntry; }
43 GPUd() FirstEntry getEntriesBound()
const {
return mFirstEntry +
mEntries; }
45 GPUd()
void setFirstEntry(FirstEntry ent) { mFirstEntry = ent; }
54 FirstEntry mFirstEntry;
67 static constexpr int NBitsTotal =
sizeof(
Base) * 8;
68 static constexpr Base MaskN = ((0x1 << NBitsN) - 1);
69 static constexpr Base MaskR = (
~Base(0)) & (~MaskN);
71 GPUd()
void sanityCheck()
73 static_assert(NBitsN < NBitsTotal,
"NBitsN too large");
82 mData = (
Base(ent) << NBitsN) + (
Base(
n) & MaskN);
84 GPUd() static constexpr
Base getMaxFirstEntry() {
return MaskR >> NBitsN; }
85 GPUd() static constexpr
Base getMaxEntries() {
return MaskN; }
86 GPUhd()
int getFirstEntry()
const {
return mData >> NBitsN; }
87 GPUhd()
int getEntries()
const {
return mData & ((0x1 << NBitsN) - 1); }
88 GPUhd()
int getEntriesBound()
const {
return getFirstEntry() + getEntries(); }
89 GPUhd()
void setFirstEntry(
int ent) { mData = (
Base(ent) << NBitsN) | (mData & MaskN); }
91 GPUhd()
void changeEntriesBy(
int inc) { setEntries(getEntries() + inc); }
94 return mData ==
other.mData;
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
VectorOfTObjectPtrs other