Use latebound enum definition for resolving early bound enum names

This commit is contained in:
Thomas Krijnen
2024-05-12 14:51:45 +02:00
parent fb72fdca9c
commit 6a62bf8493
@@ -200,14 +200,11 @@ const IfcParse::enumeration_type& %(schema_name)s::%(name)s::Class() { return *(
} }
const char* %(schema_name)s::%(name)s::ToString(Value v) { const char* %(schema_name)s::%(name)s::ToString(Value v) {
if ( v < 0 || v >= %(max_id)d ) throw IfcException("Unable to find keyword in schema"); return %(schema_name)s::%(name)s::%(name)s::Class().lookup_enum_value((size_t)v);
const char* names[] = { %(values)s };
return names[v];
} }
%(schema_name)s::%(name)s::Value %(schema_name)s::%(name)s::FromString(const std::string& s) { %(schema_name)s::%(name)s::Value %(schema_name)s::%(name)s::FromString(const std::string& s) {
%(from_string_statements)s return (%(schema_name)s::%(name)s::Value) %(schema_name)s::%(name)s::%(name)s::Class().lookup_enum_offset(s);
throw IfcException("Unable to find keyword in schema: " + s);
} }
%(schema_name)s::%(name)s::operator %(schema_name)s::%(name)s::Value() const { %(schema_name)s::%(name)s::operator %(schema_name)s::%(name)s::Value() const {