1 ## This file is a template, the comment below is emitted into the generated file
2 /* This is an auto generated file. Do not edit. */
3 #pragma once
4 
5 #include <array>
6 #include <chrono>
7 #include <string>
8 #include "count.hpp"
9 #include "median.hpp"
10 #include "data_types.hpp"
11 #include "journal.hpp"
12 #include "elog.hpp"
13 #include "errors.hpp"
14 #include "method.hpp"
15 #include "propertywatchimpl.hpp"
16 #include "pathwatchimpl.hpp"
17 #include "resolve_errors.hpp"
18 #include "sdbusplus.hpp"
19 #include "event.hpp"
20 #include "snmp_trap.hpp"
21 
22 using namespace std::string_literals;
23 using namespace std::chrono_literals;
24 
25 namespace phosphor
26 {
27 namespace dbus
28 {
29 namespace monitoring
30 {
31 
32 struct ConfigMeta
33 {
34     using Meta = std::array<std::string, ${len(meta)}>;
35 
getphosphor::dbus::monitoring::ConfigMeta36     static auto& get()
37     {
38         static const Meta meta =
39         {
40 % for m in meta:
41             "${m.name}"s,
42 % endfor
43         };
44         return meta;
45     }
46 };
47 
48 struct ConfigPaths
49 {
50     using Paths = std::array<std::string, ${len(paths)}>;
51 
getphosphor::dbus::monitoring::ConfigPaths52     static auto& get()
53     {
54         static const Paths paths =
55         {
56 % for p in paths:
57             "${p.name}"s,
58 % endfor
59         };
60         return paths;
61     }
62 };
63 
64 struct ConfigInterfaces
65 {
66     using Interfaces = std::array<std::string, ${len(interfaces)}>;
67 
getphosphor::dbus::monitoring::ConfigInterfaces68     static auto& get()
69     {
70         static const Interfaces interfaces =
71         {
72 % for i in interfaces:
73             "${i.name}"s,
74 % endfor
75         };
76         return interfaces;
77     }
78 };
79 
80 struct ConfigIntfAddPaths
81 {
82     using Paths = std::array<std::string, ${len(pathinstances)}>;
83 
getphosphor::dbus::monitoring::ConfigIntfAddPaths84     static auto& get()
85     {
86         static const Paths paths =
87         {
88 % for p in pathinstances:
89             "${p.path}"s,
90 % endfor
91         };
92         return paths;
93     }
94 };
95 
96 struct ConfigProperties
97 {
98     using Properties = std::array<std::string, ${len(propertynames)}>;
99 
getphosphor::dbus::monitoring::ConfigProperties100     static auto& get()
101     {
102         static const Properties properties =
103         {
104 % for p in propertynames:
105             "${p.name}"s,
106 % endfor
107         };
108         return properties;
109     }
110 };
111 
112 struct ConfigPropertyStorage
113 {
114     using Storage = std::array<std::tuple<std::any, std::any>, ${len(instances)}>;
115 
getphosphor::dbus::monitoring::ConfigPropertyStorage116     static auto& get()
117     {
118         static Storage storage;
119         return storage;
120     }
121 };
122 
123 struct ConfigPropertyFilters
124 {
125     using PropertyFilters = std::array<std::unique_ptr<Filters>, ${len(filters)}>;
126 
getphosphor::dbus::monitoring::ConfigPropertyFilters127     static auto& get()
128     {
129         static const PropertyFilters propertyFilters =
130         {
131 % for f in filters:
132             std::make_unique<OperandFilters<${f.datatype}>>(
133                 std::vector<std::function<bool(${f.datatype})>>{
134     % for o in f.filters:
135                     [](const auto& val){
136                         return val ${o.op} ${o.argument(loader, indent=indent +1)};
137                     },
138     % endfor
139                 }
140             ),
141 % endfor
142         };
143         return propertyFilters;
144     }
145 };
146 
147 struct ConfigPropertyIndicies
148 {
149     using PropertyIndicies = std::array<PropertyIndex, ${len(instancegroups)}>;
150 
getphosphor::dbus::monitoring::ConfigPropertyIndicies151     static auto& get()
152     {
153         static const PropertyIndicies propertyIndicies =
154         {
155             {
156 % for g in instancegroups:
157                 {
158     % for i in g.members:
159                     {
160                         PropertyIndex::key_type
161                         {
162                             ConfigPaths::get()[${i[0]}],
163                             ConfigInterfaces::get()[${i[2]}],
164                             ConfigProperties::get()[${i[3]}]
165                         },
166                         PropertyIndex::mapped_type
167                         {
168                             ConfigMeta::get()[${i[1]}],
169                             ConfigMeta::get()[${i[4]}],
170                             ConfigPropertyStorage::get()[${i[5]}]
171                         },
172                     },
173     % endfor
174                 },
175 % endfor
176             }
177         };
178         return propertyIndicies;
179     }
180 };
181 
182 struct ConfigPropertyCallbackGroups
183 {
184     using CallbackGroups = std::array<std::vector<size_t>, ${len(callbackgroups)}>;
getphosphor::dbus::monitoring::ConfigPropertyCallbackGroups185     static auto& get()
186     {
187         static const CallbackGroups propertyCallbackGraph =
188         {
189             {
190 % for g in callbackgroups:
191                 {${', '.join([str(x) for x in g.members])}},
192 % endfor
193             }
194         };
195         return propertyCallbackGraph;
196     }
197 };
198 
199 struct ConfigConditions
200 {
201     using Conditions = std::array<std::unique_ptr<Conditional>, ${len(conditions)}>;
202 
getphosphor::dbus::monitoring::ConfigConditions203     static auto& get()
204     {
205         static const Conditions propertyConditions =
206         {
207 % for c in conditions:
208             ${c.construct(loader, indent=indent +3)},
209 % endfor
210         };
211         return propertyConditions;
212     }
213 };
214 
215 struct ConfigPropertyCallbacks
216 {
217     using Callbacks = std::array<std::unique_ptr<Callback>, ${len(callbacks)}>;
218 
getphosphor::dbus::monitoring::ConfigPropertyCallbacks219     static auto& get()
220     {
221         static const Callbacks propertyCallbacks =
222         {
223 % for c in callbacks:
224             ${c.construct(loader, indent=indent +3)},
225 % endfor
226         };
227         return propertyCallbacks;
228     }
229 };
230 
231 struct ConfigPathCallbacks
232 {
233     using Callbacks = std::array<std::unique_ptr<Callback>, ${len(pathcallbacks)}>;
234 
getphosphor::dbus::monitoring::ConfigPathCallbacks235     static auto& get()
236     {
237         static const Callbacks pathCallbacks =
238         {
239 % for c in pathcallbacks:
240             ${c.construct(loader, indent=indent +3)},
241 % endfor
242         };
243         return pathCallbacks;
244     }
245 };
246 
247 struct ConfigPropertyWatches
248 {
249     using PropertyWatches = std::array<std::unique_ptr<Watch>, ${len(watches)}>;
250 
getphosphor::dbus::monitoring::ConfigPropertyWatches251     static auto& get()
252     {
253         static const PropertyWatches propertyWatches =
254         {
255 % for w in watches:
256             std::make_unique<PropertyWatchOfType<${w.datatype}, SDBusPlus>>(
257     % if w.callback is None:
258         % if w.filters is None:
259                 ConfigPropertyIndicies::get()[${w.instances}]),
260         % else:
261                 ConfigPropertyIndicies::get()[${w.instances}],
262                 ${w.ignore_start_callback},
263                 ConfigPropertyFilters::get()[${w.filters}].get()),
264         % endif
265     % else:
266         % if w.filters is None:
267                 ConfigPropertyIndicies::get()[${w.instances}],
268                 *ConfigPropertyCallbacks::get()[${w.callback}],
269                 ${w.ignore_start_callback}),
270         % else:
271                 ConfigPropertyIndicies::get()[${w.instances}],
272                 *ConfigPropertyCallbacks::get()[${w.callback}],
273                 ${w.ignore_start_callback},
274                 ConfigPropertyFilters::get()[${w.filters}].get()),
275         % endif
276     % endif
277 % endfor
278         };
279         return propertyWatches;
280     }
281 };
282 
283 struct ConfigPathWatches
284 {
285     using PathWatches = std::array<std::unique_ptr<Watch>, ${len(pathwatches)}>;
286 
287     static auto& get()
288     {
289         static const PathWatches pathWatches =
290         {
291 % for w in pathwatches:
292             std::make_unique<PathWatch<SDBusPlus>>(
293     % if w.pathcallback is None:
294                 ConfigIntfAddPaths::get()[${w.pathinstances}]),
295     % else:
296                 ConfigIntfAddPaths::get()[${w.pathinstances}],
297                 *ConfigPathCallbacks::get()[${w.pathcallback}]),
298     % endif
299 % endfor
300         };
301         return pathWatches;
302     }
303 };
304 } // namespace monitoring
305 } // namespace dbus
306 } // namespace phosphor
307