blob: cb7137d22e1acc95fb19e487f18c4cbc14deb3ad [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
7#include <tuple>
8#include <type_traits>
9#include "log.hpp"
10
11namespace phosphor
12{
13
14namespace logging
15{
16
17 % for a in errors:
Andrew Geisslerdf048c12016-11-10 16:50:35 -060018<%
19 namespaces = errors[a].split('.')
20 classname = namespaces.pop()
21%>\
22 % for s in namespaces:
23namespace ${s}
24{
25 % endfor
26
27namespace _${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050028{
29 % for b in meta[a]:
30struct ${b}
31{
32 static constexpr auto str = "${meta_data[b]['str']}";
33 static constexpr auto str_short = "${meta_data[b]['str_short']}";
34 using type = std::tuple<std::decay_t<decltype(str)>,${meta_data[b]['type']}>;
35 explicit constexpr ${b}(${meta_data[b]['type']} a) : _entry(entry(str, a)) {};
36 type _entry;
37};
38 % endfor
39
Andrew Geisslerdf048c12016-11-10 16:50:35 -060040} // namespace _${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050041<% meta_string = ', '.join(meta[a]) %>
Andrew Geisslerdf048c12016-11-10 16:50:35 -060042struct ${classname}
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050043{
Andrew Geisslerdf048c12016-11-10 16:50:35 -060044 static constexpr auto err_code = "${errors[a]}";
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050045 static constexpr auto err_msg = "${error_msg[errors[a]]}";
46 static constexpr auto L = level::${error_lvl[errors[a]]};
47 % for b in meta[a]:
Andrew Geisslerdf048c12016-11-10 16:50:35 -060048 using ${b} = _${classname}::${b};
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050049 % endfor
50 using metadata_types = std::tuple<${meta_string}>;
51};
52
Andrew Geisslerdf048c12016-11-10 16:50:35 -060053% for s in reversed(namespaces):
54} // namespace ${s}
55% endfor
56
Andrew Geisslerc830e0f2016-10-18 12:51:29 -050057 % endfor
58
59} // namespace logging
60
61} // namespace phosphor