m_Impl << "\t" << "int real_id = id - " << klass.Parent << "::TypeInstance->GetFieldCount();" << std::endl
<< "\t" << "if (real_id < 0) { return " << klass.Parent << "::TypeInstance->GetFieldInfo(id); }" << std::endl;
- if (klass.Fields.size() > 0) {
+ if (!klass.Fields.empty()) {
m_Impl << "\t" << "switch (";
if (!klass.Parent.empty())
m_Impl << "\t" << "throw std::runtime_error(\"Invalid field ID.\");" << std::endl;
- if (klass.Fields.size() > 0)
+ if (!klass.Fields.empty())
m_Impl << "\t" << "}" << std::endl;
m_Impl << "}" << std::endl << std::endl;
m_Impl << "\t" << "int real_id = fieldId - " << klass.Parent << "::TypeInstance->GetFieldCount(); " << std::endl
<< "\t" << "if (real_id < 0) { " << klass.Parent << "::TypeInstance->RegisterAttributeHandler(fieldId, callback); return; }" << std::endl;
- m_Impl << "\t" << "switch (";
+ if (!klass.Fields.empty()) {
+ m_Impl << "\t" << "switch (";
- if (!klass.Parent.empty())
- m_Impl << "real_id";
- else
- m_Impl << "fieldId";
+ if (!klass.Parent.empty())
+ m_Impl << "real_id";
+ else
+ m_Impl << "fieldId";
- m_Impl << ") {" << std::endl;
+ m_Impl << ") {" << std::endl;
- int num = 0;
- for (const Field& field : klass.Fields) {
- m_Impl << "\t\t" << "case " << num << ":" << std::endl
- << "\t\t\t" << "ObjectImpl<" << klass.Name << ">::On" << field.GetFriendlyName() << "Changed.connect(callback);" << std::endl
- << "\t\t\t" << "break;" << std::endl;
- num++;
+ int num = 0;
+ for (const Field& field : klass.Fields) {
+ m_Impl << "\t\t" << "case " << num << ":" << std::endl
+ << "\t\t\t" << "ObjectImpl<" << klass.Name << ">::On" << field.GetFriendlyName() << "Changed.connect(callback);" << std::endl
+ << "\t\t\t" << "break;" << std::endl;
+ num++;
+ }
+
+ m_Impl << "\t\t" << "default:" << std::endl
+ << "\t\t";
}
+ m_Impl << "\t" << "throw std::runtime_error(\"Invalid field ID.\");" << std::endl;
- m_Impl << "\t\t" << "default:" << std::endl
- << "\t\t\t" << "throw std::runtime_error(\"Invalid field ID.\");" << std::endl
- << "\t" << "}" << std::endl;
+ if (!klass.Fields.empty())
+ m_Impl << "\t" << "}" << std::endl;
m_Impl << "}" << std::endl << std::endl;
-
+
m_Header << "};" << std::endl << std::endl;
m_Header << std::endl;
m_Impl << "\t" << "int real_id = id - " << klass.Parent << "::TypeInstance->GetFieldCount(); " << std::endl
<< "\t" << "if (real_id < 0) { return " << klass.Parent << "::NavigateField(id); }" << std::endl;
- m_Impl << "\t" << "switch (";
+ bool haveNavigationFields = false;
- if (!klass.Parent.empty())
- m_Impl << "real_id";
- else
- m_Impl << "id";
-
- m_Impl << ") {" << std::endl;
-
- num = 0;
for (const Field& field : klass.Fields) {
if (field.Attributes & FANavigation) {
- m_Impl << "\t\t" << "case " << num << ":" << std::endl
- << "\t\t\t" << "return Navigate" << field.GetFriendlyName() << "();" << std::endl;
+ haveNavigationFields = true;
+ break;
}
+ }
- num++;
+ if (haveNavigationFields) {
+ m_Impl << "\t" << "switch (";
+
+ if (!klass.Parent.empty())
+ m_Impl << "real_id";
+ else
+ m_Impl << "id";
+
+ m_Impl << ") {" << std::endl;
+
+ num = 0;
+ for (const Field& field : klass.Fields) {
+ if (field.Attributes & FANavigation) {
+ m_Impl << "\t\t" << "case " << num << ":" << std::endl
+ << "\t\t\t" << "return Navigate" << field.GetFriendlyName() << "();" << std::endl;
+ }
+
+ num++;
+ }
+
+ m_Impl << "\t\t" << "default:" << std::endl
+ << "\t\t";
}
- m_Impl << "\t\t" << "default:" << std::endl
- << "\t\t\t" << "throw std::runtime_error(\"Invalid field ID.\");" << std::endl
- << "\t" << "}" << std::endl;
+ m_Impl << "\t" << "throw std::runtime_error(\"Invalid field ID.\");" << std::endl;
+
+ if (haveNavigationFields)
+ m_Impl << "\t" << "}" << std::endl;
m_Impl << "}" << std::endl << std::endl;