5#ifndef COLUMNAR_CORE_COLUMNAR_DEF_H
6#define COLUMNAR_CORE_COLUMNAR_DEF_H
35 static constexpr bool isXAOD =
false;
98 throw std::runtime_error (
"link key too large to fit in link: " + std::to_string(key));
100 throw std::runtime_error (
"index too large to fit in link: " + std::to_string(
index));
107#if COLUMNAR_DEFAULT_ACCESS_MODE == 0
109#elif COLUMNAR_DEFAULT_ACCESS_MODE == 2
112 #error "COLUMNAR_DEFAULT_ACCESS_MODE must be 0 or 2"
ColumnarModeXAOD ColumnarModeDefault
constexpr unsigned columnarAccessMode
static constexpr unsigned linkKeyBits
the number of bits used for the key inside the link
static constexpr bool isXAOD
Whether this is the xAOD mode.
static constexpr LinkIndexType linkIndexMask
std::size_t LinkIndexType
the type used for columns that represent element links
static constexpr unsigned linkIndexBits
various helper definitions
static LinkKeyType getLinkKey(LinkIndexType link)
get the key value from a link value
static constexpr LinkIndexType invalidLinkValue
the value used for an invalid link (a.k.a. empty/null link)
static LinkIndexType mergeLinkKeyIndex(LinkIndexType key, LinkIndexType index)
merge a key and index value into a link value
static constexpr bool inPlaceReplace
Whether for this columnar mode decorators that replace the original column will also refer to the inp...
std::uint8_t LinkKeyType
the type used for the key column
static LinkIndexType getLinkIndex(LinkIndexType link)
get the index value from a link value
static constexpr bool inPlaceReplace
Whether for this columnar mode decorators that replace the original column will also refer to the inp...
static constexpr bool isXAOD
Whether this is the xAOD mode.