KaliVeda
Toolkit for HIC analysis
KVConfig.h
1 #ifndef KV_CONFIG__H
2 #define KV_CONFIG__H
3 
4 #include "KVMacros.h"
5 
6 // These defines are passed to dependent targets using CMake target_compile_definitions,
7 // however, when compiling user's code on the kaliveda/ROOT command line with ACliC,
8 // the defines are not defined... We need to define them here.
9 #ifndef WITH_TEMPLATED_EVENTS
10 #define WITH_TEMPLATED_EVENTS
11 #endif
12 
13 #ifndef USING_ROOT6
14 #define USING_ROOT6
15 #endif
16 
17 #ifndef WITH_GIT_INFOS
18 #define WITH_GIT_INFOS
19 #endif
20 
21 #ifndef WITH_OPENGL
22 #define WITH_OPENGL
23 #endif
24 
25 #ifndef WITH_PROOF
26 #define WITH_PROOF
27 #endif
28 
29 #ifndef WITH_BOOST
30 #define WITH_BOOST
31 #endif
32 
33 #ifndef WITH_GNU_INSTALL
34 #define WITH_GNU_INSTALL
35 #endif
36 
37 #ifndef WITH_RSQLITE
38 #define WITH_RSQLITE
39 #endif
40 
41 #ifndef WITH_BUILTIN_GRU
42 #define WITH_BUILTIN_GRU
43 #endif
44 
45 #ifndef WITH_MFM
46 #define WITH_MFM
47 #endif
48 
49 #ifndef WITH_PROTOBUF
50 #define WITH_PROTOBUF
51 #endif
52 
53 #ifndef WITH_MESYTEC
54 #define WITH_MESYTEC
55 #endif
56 
57 #ifndef WITH_ZMQ
58 #define WITH_ZMQ
59 #endif
60 
61 #ifndef WITH_GEMINI
62 #define WITH_GEMINI
63 #endif
64 
65 #ifndef WITH_FITLTG
66 #define WITH_FITLTG
67 #endif
68 
69 #ifndef WITH_MULTICORE_CPU
70 #define WITH_MULTICORE_CPU 8
71 #endif
72 
73 
74 // Info on C++ standard used to compile code
75 #if __cplusplus > 199711L
76 #define WITH_CPP11
77 #if __cplusplus > 201103L
78 #define WITH_CPP14
79 #if __cplusplus > 201402L
80 #define WITH_CPP17
81 #if __cplusplus > 201703L
82 #define WITH_CPP20
83 #if __cplusplus > 202002L
84 #define WITH_CPP23
85 #if __cplusplus > 202302L
86 #define WITH_CPP26
87 #endif
88 #endif
89 #endif
90 #endif
91 #endif
92 #endif
93 
94 // macro which expands to default constructor
95 #define ROOT_DEF_CTOR(classname,basename) \
96  classname() : basename() {}
97 
98 // macro which expands to constructor with name
99 #define ROOT_NAME_CTOR(classname,basename) \
100  classname(const Char_t* name) : basename(name) {}
101 
102 // macro which expands to default constructor
103 #define ROOT_DEF_CTOR_WITH_INIT(classname,basename) \
104  classname() : basename() { init(); }
105 
106 // macro which expands to constructor with name
107 #define ROOT_NAME_CTOR_WITH_INIT(classname,basename) \
108  classname(const Char_t* name) : basename(name) { init(); }
109 
110 // macro which expands to standard ROOT assignment by copy operator definition
111 // using object's Copy(TObject&) const method
112 // place in header file as needed
113 #define ROOT_COPY_ASSIGN_OP(name) \
114  name& operator=(const name& other) \
115  { \
116  if(this != &other) \
117  { \
118  other.Copy(*this); \
119  } \
120  return (*this); \
121  }
122 
123 // macro which expands to standard ROOT copy constructor definition
124 // using object's Copy(TObject&) const method
125 // place in header file as needed
126 #define ROOT_COPY_CTOR(classname,basename) \
127  classname(const classname& other) \
128  : basename() \
129  { \
130  other.Copy(*this); \
131  }
132 
133 // provide set of constructors (default, named, copy) & a default destructor,
134 // plus copy assignment operator
135 #define ROOT_FULL_SET(classname,basename) \
136  ROOT_DEF_CTOR(classname,basename) \
137  ROOT_NAME_CTOR(classname,basename) \
138  ROOT_COPY_CTOR(classname,basename) \
139  ROOT_COPY_ASSIGN_OP(classname)
140 
141 // provide set of constructors (default, copy),
142 // plus copy assignment operator
143 #define ROOT_FULL_SET_UNNAMED(classname,basename) \
144  ROOT_DEF_CTOR(classname,basename) \
145  ROOT_COPY_CTOR(classname,basename) \
146  ROOT_COPY_ASSIGN_OP(classname)
147 
148 // provide set of constructors (default, named, copy),
149 // plus copy assignment operator, default & named ctors call init()
150 #define ROOT_FULL_SET_WITH_INIT(classname,basename) \
151  ROOT_DEF_CTOR_WITH_INIT(classname,basename) \
152  ROOT_NAME_CTOR_WITH_INIT(classname,basename) \
153  ROOT_COPY_CTOR(classname,basename) \
154  ROOT_COPY_ASSIGN_OP(classname)
155 
156 // avoid warnings from clang static analyzer
157 #define AUTO_NEW_CTOR(classname,ptr) \
158  auto ptr = new classname
159 
160 #endif