# Template for beginning of private members.
header_private_template = """
private:
- static const std::map<enum {enumname}, const {classname} *> values;
+ static const std::map<enum {enumname}, const {classname} *> _values;
{classname}(enum {enumname} id, const char name[]);
"""
const {classname} *{classname}::get(int id)
{{
- return {classname}::values.at(static_cast<{enumname}>(id));
+ if (_values.find(static_cast<{enumname}>(id)) == _values.end())
+ throw Error(SR_ERR_ARG);
+
+ return {classname}::_values.at(static_cast<{enumname}>(id));
}}
"""
classname, classname, trimmed_name, classname, trimmed_name)
# Define map of enum values to constants
- print >> code, 'const std::map<enum %s, const %s *> %s::values = {' % (
+ print >> code, 'const std::map<enum %s, const %s *> %s::_values = {' % (
enum_name, classname, classname)
for name, trimmed_name in zip(member_names, trimmed_names):
print >> code, '\t{%s, %s::%s},' % (name, classname, trimmed_name)