void Qml::QmlNode::AddNameValueProperty(QString name, QmlNode::Value v, Property p) { int cid; if (p.eValueType != v.type) { p.eValueType = v.type; qDebug() << "[WARN] AddNameValueProperty with p.eValueType != v.type, try fixit."; if (!p.Assert()) return; } if (m_mNames.find(name) != m_mNames.end()) { cid = *m_mNames.find(name); if (!(p.eSymbolType == Object && p.o.bHasOnToken && v.type == BindingObject)) { EraseByName(name); m_mNames[name] = cid; m_mNameIds[cid] = name; } } else { cid = ++m_iNameCnt; m_mNames[name] = cid; m_mNameIds[cid] = name; } if (!(p.eSymbolType == Object && p.o.bHasOnToken)) m_mProperties[cid] = p; if (v.type == QmlNode::ValueType::BindingObject) { AddObject(v.o); if (p.eSymbolType == Object && p.o.bHasOnToken && v.type == BindingObject) m_lOnObjects[cid].append(v.o); else m_mObjects[cid] = v.o; m_mBindings[v.o.data()] = cid; } if (p.eSymbolType == Function) { m_lFunctions.push_back(cid); } if (v.type == QmlNode::ValueType::RawCode) { m_mValues[cid] = v.s; } if (v.type == QmlNode::ValueType::Array) { for (auto x : v.l) { AddObject(x); m_mBindings[x.data()] = cid; } m_mlObjects[cid] = v.l; } }