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 <algorithm>
#include <nlohmann/json.hpp>
#include "AthContainers/AuxElement.h"
#include "GlobalSimulation/Object.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::Bitset< N, Clamp, Signed >
 Custom Bitset class that can handle clamping of values. More...
class  GlobalSim::BitField< Lo, Hi, AuxValue, Value, Signed, Clamped >
struct  GlobalSim::BitField< Lo, Hi, AuxValue, Value, Signed, Clamped >::Params
class  GlobalSim::BitFieldAccessor< Field >
struct  GlobalSim::NoBase
class  GlobalSim::BitSpec< Derived, N, Base >

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(...)

Typedefs

template<unsigned Lo, unsigned Hi, typename AuxValue, typename Value = AuxValue>
using GlobalSim::SignedBitField = BitField<Lo, Hi, AuxValue, Value, true>
template<unsigned Lo, unsigned Hi, typename AuxValue, typename Value = AuxValue>
using GlobalSim::UnclampedBitField = BitField<Lo, Hi, AuxValue, Value, false,false>

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 BaseSpec::ObjectAcc*/ \
{ \
public: \
explicit ObjectAcc(const SG::AuxElement& obj) \
: /*BaseSpec::ObjectAcc(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:816
#define FOR_EACH(m,...)
Definition BitSpec.h:805
#define FIELD_PTR(name)
Definition BitSpec.h:813
#define FIELD_ACCESSOR(name)
Definition BitSpec.h:820
AuxElement(SG::AuxVectorData *container, size_t index)
Base class for elements of a container that can have aux data.

Definition at line 823 of file BitSpec.h.

823#define DECLARE_FIELDS(...) \
824 protected: \
825 FOR_EACH(FIELD_PTR, __VA_ARGS__) \
826 public: \
827 static inline constexpr auto fields = \
828 std::tuple{ FOR_EACH(FIELD_PTR_VALUE, __VA_ARGS__) }; \
829 \
830 static_assert(validateFields(),"Invalid spec: overlapping fields or fields beyond spec"); \
831 \
832 class ObjectAcc/* : public BaseSpec::ObjectAcc*/ \
833 { \
834 public: \
835 explicit ObjectAcc(const SG::AuxElement& obj) \
836 : /*BaseSpec::ObjectAcc(obj),*/ m_obj(obj) \
837 {} \
838 protected: \
839 const SG::AuxElement& m_obj; \
840 public: \
841 \
842 FOR_EACH(FIELD_ACCESSOR, __VA_ARGS__) \
843 \
844 }

◆ FE_1

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

Definition at line 781 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:789

Definition at line 790 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:790

Definition at line 791 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:791

Definition at line 792 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:792

Definition at line 793 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:793

Definition at line 794 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:794

Definition at line 795 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:795

Definition at line 796 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:796

Definition at line 797 of file BitSpec.h.

◆ FE_18

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

Definition at line 798 of file BitSpec.h.

◆ FE_19

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

Definition at line 799 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:781

Definition at line 782 of file BitSpec.h.

◆ FE_20

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

Definition at line 800 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:782

Definition at line 783 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:783

Definition at line 784 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:784

Definition at line 785 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:785

Definition at line 786 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:786

Definition at line 787 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:787

Definition at line 788 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:788

Definition at line 789 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 820 of file BitSpec.h.

820#define FIELD_ACCESSOR(name) \
821 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 813 of file BitSpec.h.

813#define FIELD_PTR(name) \
814 static inline constexpr auto name##_ptr = &name;

◆ FIELD_PTR_VALUE

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

Definition at line 816 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:802
#define FE_20(m, a,...)
Definition BitSpec.h:800

Definition at line 805 of file BitSpec.h.

805#define FOR_EACH(m, ...) \
806 GET_FE(__VA_ARGS__, \
807 FE_20, FE_19, FE_18, FE_17, \
808 FE_16, FE_15, FE_14, FE_13, \
809 FE_12, FE_11, FE_10, FE_9, \
810 FE_8, FE_7, FE_6, FE_5, \
811 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 802 of file BitSpec.h.