5#ifndef COLUMNAR_CORE_COLUMNAR_DEF_H
6#define COLUMNAR_CORE_COLUMNAR_DEF_H
44 static constexpr bool isXAOD =
false;
110 throw std::runtime_error (
"link key too large to fit in link: " + std::to_string(key));
112 throw std::runtime_error (
"index too large to fit in link: " + std::to_string(
index));
198 template<
typename Mode>
200 template<
typename Mode>
205#if COLUMNAR_DEFAULT_ACCESS_MODE == 0
207#elif COLUMNAR_DEFAULT_ACCESS_MODE == 2
209#elif COLUMNAR_DEFAULT_ACCESS_MODE == 100
212 #error "COLUMNAR_DEFAULT_ACCESS_MODE must be 0, 2, or 100"
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...
static constexpr bool isArrayMode
Whether this is an array mode.
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 isColumnarMode
Whather this is a columnar mode.
static constexpr bool inPlaceReplace
Whether for this columnar mode decorators that replace the original column will also refer to the inp...
static constexpr LinkIndexType invalidLinkValue
the value used for an invalid link (a.k.a. empty/null link)
std::uint32_t LinkKeyType
the type used for the key column
static constexpr bool isArrayMode
Whether this is an array mode.
std::size_t LinkIndexType
the type used for columns that represent element links
static constexpr bool isColumnarMode
Whather this is a columnar mode.
static constexpr bool isXAOD
Whether this is the xAOD mode.
static constexpr bool isColumnarMode
Whather this is a columnar mode.
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.
static constexpr bool isArrayMode
Whether this is an array mode.