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_TKN
54 #define WITH_TKN
55 #endif
56 
57 #ifndef WITH_PROTOBUF
58 #define WITH_PROTOBUF
59 #endif
60 
61 #ifndef WITH_MESYTEC
62 #define WITH_MESYTEC
63 #endif
64 
65 #ifndef WITH_ZMQ
66 #define WITH_ZMQ
67 #endif
68 
69 #ifndef WITH_GEMINI
70 #define WITH_GEMINI
71 #endif
72 
73 #ifndef WITH_FITLTG
74 #define WITH_FITLTG
75 #endif
76 
77 #ifndef WITH_MULTICORE_CPU
78 #define WITH_MULTICORE_CPU 8
79 #endif
80 
81 
82 // Info on C++ standard used to compile code
83 #if __cplusplus > 199711L
84 #define WITH_CPP11
85 #if __cplusplus > 201103L
86 #define WITH_CPP14
87 #if __cplusplus > 201402L
88 #define WITH_CPP17
89 #if __cplusplus > 201703L
90 #define WITH_CPP20
91 #if __cplusplus > 202002L
92 #define WITH_CPP23
93 #if __cplusplus > 202302L
94 #define WITH_CPP26
95 #endif
96 #endif
97 #endif
98 #endif
99 #endif
100 #endif
101 
102 // macro which expands to default constructor
103 #define ROOT_DEF_CTOR(classname,basename) \
104  classname() : basename() {}
105 
106 // macro which expands to constructor with name
107 #define ROOT_NAME_CTOR(classname,basename) \
108  classname(const Char_t* name) : basename(name) {}
109 
110 // macro which expands to default constructor
111 #define ROOT_DEF_CTOR_WITH_INIT(classname,basename) \
112  classname() : basename() { init(); }
113 
114 // macro which expands to constructor with name
115 #define ROOT_NAME_CTOR_WITH_INIT(classname,basename) \
116  classname(const Char_t* name) : basename(name) { init(); }
117 
118 // macro which expands to standard ROOT assignment by copy operator definition
119 // using object's Copy(TObject&) const method
120 // place in header file as needed
121 #define ROOT_COPY_ASSIGN_OP(name) \
122  name& operator=(const name& other) \
123  { \
124  if(this != &other) \
125  { \
126  other.Copy(*this); \
127  } \
128  return (*this); \
129  }
130 
131 // macro which expands to standard ROOT copy constructor definition
132 // using object's Copy(TObject&) const method
133 // place in header file as needed
134 #define ROOT_COPY_CTOR(classname,basename) \
135  classname(const classname& other) \
136  : basename() \
137  { \
138  other.Copy(*this); \
139  }
140 
141 // provide set of constructors (default, named, copy) & a default destructor,
142 // plus copy assignment operator
143 #define ROOT_FULL_SET(classname,basename) \
144  ROOT_DEF_CTOR(classname,basename) \
145  ROOT_NAME_CTOR(classname,basename) \
146  ROOT_COPY_CTOR(classname,basename) \
147  ROOT_COPY_ASSIGN_OP(classname)
148 
149 // provide set of constructors (default, copy),
150 // plus copy assignment operator
151 #define ROOT_FULL_SET_UNNAMED(classname,basename) \
152  ROOT_DEF_CTOR(classname,basename) \
153  ROOT_COPY_CTOR(classname,basename) \
154  ROOT_COPY_ASSIGN_OP(classname)
155 
156 // provide set of constructors (default, named, copy),
157 // plus copy assignment operator, default & named ctors call init()
158 #define ROOT_FULL_SET_WITH_INIT(classname,basename) \
159  ROOT_DEF_CTOR_WITH_INIT(classname,basename) \
160  ROOT_NAME_CTOR_WITH_INIT(classname,basename) \
161  ROOT_COPY_CTOR(classname,basename) \
162  ROOT_COPY_ASSIGN_OP(classname)
163 
164 // avoid warnings from clang static analyzer
165 #define AUTO_NEW_CTOR(classname,ptr) \
166  auto ptr = new classname
167 
168 #endif