blob: 181d4bd42b3d171589cceed3d3b38e7167a237ea [file] [log] [blame]
Andrew Geisslerc830e0f2016-10-18 12:51:29 -05001## Note that this file is not auto generated, it is what generates the
2## elog-gen.hpp file
3// This file was autogenerated. Do not edit!
4// See elog-gen.py for more details
5#pragma once
6
Deepak Kodihalli99161192017-01-16 04:00:07 -06007#include <string>
Andrew Geisslerc830e0f2016-10-18 12:51:29 -05008#include <tuple>
9#include <type_traits>
Saqib Khan2bb15192017-02-13 13:19:55 -060010#include <phosphor-logging/log.hpp>
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050011
12namespace phosphor
13{
14
15namespace logging
16{
17
Deepak Kodihalli160d3e02017-01-17 04:25:22 -060018 % for index, name in enumerate(errors):
Andrew Geisslerdf048c12016-11-10 16:50:35 -060019<%
Adriana Kobylak465aaec2017-02-20 11:58:03 -060020 ## Ex: name: xyz.openbmc_project.Error.Callout.Device
21 namespaces = name.split('.')
22 ## classname is the last name item (Device)
23 classname = namespaces[-1]
24 ## namespaces are all the name items except the last one
25 namespaces = namespaces[:-1]
Andrew Geisslerdf048c12016-11-10 16:50:35 -060026%>\
27 % for s in namespaces:
28namespace ${s}
29{
30 % endfor
Adriana Kobylak465aaec2017-02-20 11:58:03 -060031namespace Error
32{
Andrew Geisslerdf048c12016-11-10 16:50:35 -060033namespace _${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050034{
Deepak Kodihalli5d1aace2017-01-18 00:17:39 -060035 % for b in meta[name]:
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050036struct ${b}
37{
38 static constexpr auto str = "${meta_data[b]['str']}";
39 static constexpr auto str_short = "${meta_data[b]['str_short']}";
40 using type = std::tuple<std::decay_t<decltype(str)>,${meta_data[b]['type']}>;
41 explicit constexpr ${b}(${meta_data[b]['type']} a) : _entry(entry(str, a)) {};
42 type _entry;
43};
44 % endfor
45
Andrew Geisslerdf048c12016-11-10 16:50:35 -060046} // namespace _${classname}
Deepak Kodihallif2462f02017-01-19 03:40:12 -060047<%
48 meta_string = ', '.join(meta[name])
Deepak Kodihalli331ef902017-01-31 09:47:07 -060049 parent_meta = []
Deepak Kodihallif2462f02017-01-19 03:40:12 -060050
51 parent = parents[name]
52 while parent:
Adriana Kobylak465aaec2017-02-20 11:58:03 -060053 tmpparent = parent.split('.')
54 ## Name is the last item
55 parent_name = tmpparent[-1]
56 ## namespaces are all the name items except the last one
57 parent_namespace = '::'.join(tmpparent[:-1])
58 parent_meta += [parent_namespace + "::Error::" + parent_name + "::" +
59 p for p in meta[parent]]
Deepak Kodihalli331ef902017-01-31 09:47:07 -060060 parent_meta_short = ', '.join(meta[parent])
61 meta_string = meta_string + ", " + parent_meta_short
Deepak Kodihallif2462f02017-01-19 03:40:12 -060062 parent = parents[parent]
63%>
Andrew Geisslerdf048c12016-11-10 16:50:35 -060064struct ${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050065{
Deepak Kodihalli160d3e02017-01-17 04:25:22 -060066 static constexpr auto err_code = "${name}";
67 static constexpr auto err_msg = "${error_msg[name]}";
68 static constexpr auto L = level::${error_lvl[name]};
Deepak Kodihalli5d1aace2017-01-18 00:17:39 -060069 % for b in meta[name]:
Andrew Geisslerdf048c12016-11-10 16:50:35 -060070 using ${b} = _${classname}::${b};
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050071 % endfor
Deepak Kodihalli331ef902017-01-31 09:47:07 -060072 % for b in parent_meta:
73 using ${b.split("::").pop()} = ${b};
74 % endfor
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050075 using metadata_types = std::tuple<${meta_string}>;
76};
Adriana Kobylak465aaec2017-02-20 11:58:03 -060077
78} // namespace Error
Andrew Geisslerdf048c12016-11-10 16:50:35 -060079% for s in reversed(namespaces):
80} // namespace ${s}
81% endfor
82
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050083 % endfor
84
85} // namespace logging
86
87} // namespace phosphor