blob: 097b865fb7f0b41b268415cd8849534556336e03 [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 Kobylak371a38b2017-02-19 13:45:42 -060020 namespaces = error_namespace[name].split('/')
Deepak Kodihalli160d3e02017-01-17 04:25:22 -060021 ## In case someone provided a error_namespace ending with '/', remove the
22 ## last split string, which would be an empty string.
23 if not namespaces[-1]:
24 namespaces = namespaces[:-1]
25 classname = name
Andrew Geisslerdf048c12016-11-10 16:50:35 -060026%>\
27 % for s in namespaces:
28namespace ${s}
29{
30 % endfor
Andrew Geisslerdf048c12016-11-10 16:50:35 -060031namespace _${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050032{
Deepak Kodihalli5d1aace2017-01-18 00:17:39 -060033 % for b in meta[name]:
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050034struct ${b}
35{
36 static constexpr auto str = "${meta_data[b]['str']}";
37 static constexpr auto str_short = "${meta_data[b]['str_short']}";
38 using type = std::tuple<std::decay_t<decltype(str)>,${meta_data[b]['type']}>;
39 explicit constexpr ${b}(${meta_data[b]['type']} a) : _entry(entry(str, a)) {};
40 type _entry;
41};
42 % endfor
43
Andrew Geisslerdf048c12016-11-10 16:50:35 -060044} // namespace _${classname}
Deepak Kodihallif2462f02017-01-19 03:40:12 -060045<%
46 meta_string = ', '.join(meta[name])
Deepak Kodihalli331ef902017-01-31 09:47:07 -060047 parent_meta = []
Deepak Kodihallif2462f02017-01-19 03:40:12 -060048
49 parent = parents[name]
50 while parent:
Deepak Kodihalli331ef902017-01-31 09:47:07 -060051 parent_meta += [parent + "::" + p for p in meta[parent]]
52 parent_meta_short = ', '.join(meta[parent])
53 meta_string = meta_string + ", " + parent_meta_short
Deepak Kodihallif2462f02017-01-19 03:40:12 -060054 parent = parents[parent]
55%>
Andrew Geisslerdf048c12016-11-10 16:50:35 -060056struct ${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050057{
Deepak Kodihalli160d3e02017-01-17 04:25:22 -060058 static constexpr auto err_code = "${name}";
59 static constexpr auto err_msg = "${error_msg[name]}";
60 static constexpr auto L = level::${error_lvl[name]};
Deepak Kodihalli5d1aace2017-01-18 00:17:39 -060061 % for b in meta[name]:
Andrew Geisslerdf048c12016-11-10 16:50:35 -060062 using ${b} = _${classname}::${b};
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050063 % endfor
Deepak Kodihalli331ef902017-01-31 09:47:07 -060064 % for b in parent_meta:
65 using ${b.split("::").pop()} = ${b};
66 % endfor
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050067 using metadata_types = std::tuple<${meta_string}>;
68};
Andrew Geisslerdf048c12016-11-10 16:50:35 -060069% for s in reversed(namespaces):
70} // namespace ${s}
71% endfor
72
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050073 % endfor
74
75} // namespace logging
76
77} // namespace phosphor