ATLAS Offline Software
Loading...
Searching...
No Matches
BitSpec.h File Reference
#include <bit>
#include <bitset>
#include <cstddef>
#include <cstdint>
#include <stdexcept>
#include <string>
#include <string_view>
#include <tuple>
#include <type_traits>
#include <utility>
#include <nlohmann/json.hpp>
#include "AthContainers/AuxElement.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  GlobalSim::AuxSpec
class  GlobalSim::BitField< Lo, Hi, AuxValue, Value >
class  GlobalSim::BitFieldAccessor< Field >
class  GlobalSim::BitSpec< Derived, N >

Namespaces

namespace  GlobalSim
 AlgTool to read in LArStripNeighborhoods, and run the BDT Algorithm.

Macros

#define FE_1(m, a)
#define FE_2(m, a, ...)
#define FE_3(m, a, ...)
#define FE_4(m, a, ...)
#define FE_5(m, a, ...)
#define FE_6(m, a, ...)
#define FE_7(m, a, ...)
#define FE_8(m, a, ...)
#define FE_9(m, a, ...)
#define FE_10(m, a, ...)
#define FE_11(m, a, ...)
#define FE_12(m, a, ...)
#define FE_13(m, a, ...)
#define FE_14(m, a, ...)
#define FE_15(m, a, ...)
#define FE_16(m, a, ...)
#define FE_17(m, a, ...)
#define FE_18(m, a, ...)
#define FE_19(m, a, ...)
#define FE_20(m, a, ...)
#define GET_FE(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, NAME, ...)
#define FOR_EACH(m, ...)
#define FIELD_PTR(name)
#define FIELD_PTR_VALUE(name)
#define FIELD_ACCESSOR(name)
#define DECLARE_FIELDS(...)

Macro Definition Documentation

◆ DECLARE_FIELDS

#define DECLARE_FIELDS ( ...)
Value:
protected: \
FOR_EACH(FIELD_PTR, __VA_ARGS__) \
public: \
static inline constexpr auto fields = \
std::tuple{ FOR_EACH(FIELD_PTR_VALUE, __VA_ARGS__) }; \
\
static_assert(validateFields(),"Invalid spec: overlapping fields or fields beyond spec"); \
\
class ObjectAcc \
{ \
public: \
explicit ObjectAcc(const SG::AuxElement& obj) \
: m_obj(obj) \
{} \
protected: \
const SG::AuxElement& m_obj; \
public: \
\
FOR_EACH(FIELD_ACCESSOR, __VA_ARGS__) \
\
};
#define FIELD_PTR_VALUE(name)
Definition BitSpec.h:559
#define FOR_EACH(m,...)
Definition BitSpec.h:548
#define FIELD_PTR(name)
Definition BitSpec.h:556
#define FIELD_ACCESSOR(name)
Definition BitSpec.h:563
AuxElement(SG::AuxVectorData *container, size_t index)
Base class for elements of a container that can have aux data.

Definition at line 566 of file BitSpec.h.

566#define DECLARE_FIELDS(...) \
567 protected: \
568 FOR_EACH(FIELD_PTR, __VA_ARGS__) \
569 public: \
570 static inline constexpr auto fields = \
571 std::tuple{ FOR_EACH(FIELD_PTR_VALUE, __VA_ARGS__) }; \
572 \
573 static_assert(validateFields(),"Invalid spec: overlapping fields or fields beyond spec"); \
574 \
575 class ObjectAcc \
576 { \
577 public: \
578 explicit ObjectAcc(const SG::AuxElement& obj) \
579 : m_obj(obj) \
580 {} \
581 protected: \
582 const SG::AuxElement& m_obj; \
583 public: \
584 \
585 FOR_EACH(FIELD_ACCESSOR, __VA_ARGS__) \
586 \
587 };

◆ FE_1

#define FE_1 ( m,
a )
Value:
m(a)
static Double_t a

Definition at line 524 of file BitSpec.h.

◆ FE_10

#define FE_10 ( m,
a,
... )
Value:
m(a) FE_9(m, __VA_ARGS__)
#define FE_9(m, a,...)
Definition BitSpec.h:532

Definition at line 533 of file BitSpec.h.

◆ FE_11

#define FE_11 ( m,
a,
... )
Value:
m(a) FE_10(m, __VA_ARGS__)
#define FE_10(m, a,...)
Definition BitSpec.h:533

Definition at line 534 of file BitSpec.h.

◆ FE_12

#define FE_12 ( m,
a,
... )
Value:
m(a) FE_11(m, __VA_ARGS__)
#define FE_11(m, a,...)
Definition BitSpec.h:534

Definition at line 535 of file BitSpec.h.

◆ FE_13

#define FE_13 ( m,
a,
... )
Value:
m(a) FE_12(m, __VA_ARGS__)
#define FE_12(m, a,...)
Definition BitSpec.h:535

Definition at line 536 of file BitSpec.h.

◆ FE_14

#define FE_14 ( m,
a,
... )
Value:
m(a) FE_13(m, __VA_ARGS__)
#define FE_13(m, a,...)
Definition BitSpec.h:536

Definition at line 537 of file BitSpec.h.

◆ FE_15

#define FE_15 ( m,
a,
... )
Value:
m(a) FE_14(m, __VA_ARGS__)
#define FE_14(m, a,...)
Definition BitSpec.h:537

Definition at line 538 of file BitSpec.h.

◆ FE_16

#define FE_16 ( m,
a,
... )
Value:
m(a) FE_15(m, __VA_ARGS__)
#define FE_15(m, a,...)
Definition BitSpec.h:538

Definition at line 539 of file BitSpec.h.

◆ FE_17

#define FE_17 ( m,
a,
... )
Value:
m(a) FE_16(m, __VA_ARGS__)
#define FE_16(m, a,...)
Definition BitSpec.h:539

Definition at line 540 of file BitSpec.h.

◆ FE_18

#define FE_18 ( m,
a,
... )
Value:
m(a) FE_18(m, __VA_ARGS__)
#define FE_18(m, a,...)
Definition BitSpec.h:541

Definition at line 541 of file BitSpec.h.

◆ FE_19

#define FE_19 ( m,
a,
... )
Value:
m(a) FE_19(m, __VA_ARGS__)
#define FE_19(m, a,...)
Definition BitSpec.h:542

Definition at line 542 of file BitSpec.h.

◆ FE_2

#define FE_2 ( m,
a,
... )
Value:
m(a) FE_1(m, __VA_ARGS__)
#define FE_1(m, a)
Definition BitSpec.h:524

Definition at line 525 of file BitSpec.h.

◆ FE_20

#define FE_20 ( m,
a,
... )
Value:
m(a) FE_20(m, __VA_ARGS__)
#define FE_20(m, a,...)
Definition BitSpec.h:543

Definition at line 543 of file BitSpec.h.

◆ FE_3

#define FE_3 ( m,
a,
... )
Value:
m(a) FE_2(m, __VA_ARGS__)
#define FE_2(m, a,...)
Definition BitSpec.h:525

Definition at line 526 of file BitSpec.h.

◆ FE_4

#define FE_4 ( m,
a,
... )
Value:
m(a) FE_3(m, __VA_ARGS__)
#define FE_3(m, a,...)
Definition BitSpec.h:526

Definition at line 527 of file BitSpec.h.

◆ FE_5

#define FE_5 ( m,
a,
... )
Value:
m(a) FE_4(m, __VA_ARGS__)
#define FE_4(m, a,...)
Definition BitSpec.h:527

Definition at line 528 of file BitSpec.h.

◆ FE_6

#define FE_6 ( m,
a,
... )
Value:
m(a) FE_5(m, __VA_ARGS__)
#define FE_5(m, a,...)
Definition BitSpec.h:528

Definition at line 529 of file BitSpec.h.

◆ FE_7

#define FE_7 ( m,
a,
... )
Value:
m(a) FE_6(m, __VA_ARGS__)
#define FE_6(m, a,...)
Definition BitSpec.h:529

Definition at line 530 of file BitSpec.h.

◆ FE_8

#define FE_8 ( m,
a,
... )
Value:
m(a) FE_7(m, __VA_ARGS__)
#define FE_7(m, a,...)
Definition BitSpec.h:530

Definition at line 531 of file BitSpec.h.

◆ FE_9

#define FE_9 ( m,
a,
... )
Value:
m(a) FE_8(m, __VA_ARGS__)
#define FE_8(m, a,...)
Definition BitSpec.h:531

Definition at line 532 of file BitSpec.h.

◆ FIELD_ACCESSOR

#define FIELD_ACCESSOR ( name)
Value:
BitFieldAccessor<std::remove_cvref_t<decltype(*name##_ptr)>> name{*name##_ptr,m_obj};

Definition at line 563 of file BitSpec.h.

563#define FIELD_ACCESSOR(name) \
564 BitFieldAccessor<std::remove_cvref_t<decltype(*name##_ptr)>> name{*name##_ptr,m_obj};

◆ FIELD_PTR

#define FIELD_PTR ( name)
Value:
static inline constexpr auto name##_ptr = &name;

Definition at line 556 of file BitSpec.h.

556#define FIELD_PTR(name) \
557 static inline constexpr auto name##_ptr = &name;

◆ FIELD_PTR_VALUE

#define FIELD_PTR_VALUE ( name)
Value:
name##_ptr,

Definition at line 559 of file BitSpec.h.

◆ FOR_EACH

#define FOR_EACH ( m,
... )
Value:
GET_FE(__VA_ARGS__, \
FE_4, FE_3, FE_2, FE_1)(m, __VA_ARGS__)
#define GET_FE(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, NAME,...)
Definition BitSpec.h:545
#define FE_17(m, a,...)
Definition BitSpec.h:540

Definition at line 548 of file BitSpec.h.

548#define FOR_EACH(m, ...) \
549 GET_FE(__VA_ARGS__, \
550 FE_20, FE_19, FE_18, FE_17, \
551 FE_16, FE_15, FE_14, FE_13, \
552 FE_12, FE_11, FE_10, FE_9, \
553 FE_8, FE_7, FE_6, FE_5, \
554 FE_4, FE_3, FE_2, FE_1)(m, __VA_ARGS__)

◆ GET_FE

#define GET_FE ( _1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
_11,
_12,
_13,
_14,
_15,
_16,
_17,
_18,
_19,
_20,
NAME,
... )
Value:
NAME

Definition at line 545 of file BitSpec.h.