16 #include "Base/Util/Assert.h"
22 const QStringList& modelTypes)
24 if (min < 0 || (min > max && max >= 0))
28 m_tags.push_back({
name, min, max, 0, modelTypes});
38 for (
const auto& tag :
m_tags) {
39 if (tag.name == tagName) {
40 if (modelType.isEmpty())
42 return tag.modelTypes.isEmpty() ? true : tag.modelTypes.contains(modelType);
60 for (
const auto& tag :
m_tags) {
61 if (tag.name == tagName)
63 index += tag.childCount;
84 if (row > tag.childCount)
95 for (
const auto& tag :
m_tags) {
96 if (index < tag.childCount)
98 index -= tag.childCount;
122 ASSERT(tag.childCount > 0);
130 const auto& tag =
tagInfo(tagName);
131 return tag.min == 1 && tag.max == 1 && tag.childCount == 1;
141 for (
const auto& tag :
m_tags)
142 if (tag.name == tagName)
149 const auto& tag =
tagInfo(tagName);
150 return tag.max != -1 && tag.max == tag.childCount;
QString const & name(EShape k)