elog-gen.py : alias inherited metadata
Alias metadata inherited from parent errors such that users don't have
to explicitly know which parent provides the metadata :
using metaName = ParentError::metaName
Change-Id: Idd285766b9f831d19391f46cee1ed2ff320b2c30
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/tools/phosphor-logging/templates/elog-gen-template.mako.hpp b/tools/phosphor-logging/templates/elog-gen-template.mako.hpp
index e39deea..b0dec60 100644
--- a/tools/phosphor-logging/templates/elog-gen-template.mako.hpp
+++ b/tools/phosphor-logging/templates/elog-gen-template.mako.hpp
@@ -44,12 +44,13 @@
} // namespace _${classname}
<%
meta_string = ', '.join(meta[name])
+ parent_meta = []
parent = parents[name]
while parent:
- parent_meta = [parent + "::" + p for p in meta[parent]]
- parent_meta = ', '.join(parent_meta)
- meta_string = meta_string + ", " + parent_meta
+ parent_meta += [parent + "::" + p for p in meta[parent]]
+ parent_meta_short = ', '.join(meta[parent])
+ meta_string = meta_string + ", " + parent_meta_short
parent = parents[parent]
%>
struct ${classname}
@@ -60,6 +61,9 @@
% for b in meta[name]:
using ${b} = _${classname}::${b};
% endfor
+ % for b in parent_meta:
+ using ${b.split("::").pop()} = ${b};
+ % endfor
using metadata_types = std::tuple<${meta_string}>;
};
% for s in reversed(namespaces):