void ADC::initPins() { int numBits = propertyByName("numBits")->value().toInt(); // dataInt("numBits"); if ( numBits < 2 ) numBits = 2; else if ( numBits > max_ADDAC_bits ) numBits = max_ADDAC_bits; if ( numBits == m_numBits ) return; QStringList pins; int inPos = (numBits - 1 + (numBits % 2)) / 2; for(int i=0; i < inPos; ++i) pins += ""; pins += "In"; for(int i = inPos + 1; i < numBits; ++i) pins += ""; for(int i = numBits - 1; i >= 0; --i) pins += QString::number(i); // if(!m_realNode) // m_realNode = ecNodeWithID("In"); if(numBits > m_numBits) { for(int i = m_numBits; i < numBits; ++i) { m_logic[i] = new LogicOut(LogicConfig(), false); } } else { for(int i = numBits; i < m_numBits; ++i) { QString id = QString::number(i); // FIXME cleanup of elements: logic outs and pins /* removeDisplayText(id); removeElement(m_logic[i], false); removeNode(id); */ m_logic[i] = 0; } } m_numBits = numBits; }
void DAC::initPins() { int numBits = propertyByName("numBits")->value().toInt(); // FIXME dataInt("numBits"); if(numBits < 2) numBits = 2; else if(numBits > max_ADDAC_bits) numBits = max_ADDAC_bits; if(numBits == m_numBits) return; QStringList pins; for(int i = 0; i < numBits; ++i) pins += QString::number(i); int inPos = (numBits + 1 + (numBits % 2)) / 2; for(int i = numBits - 1; i >= inPos; --i) pins += ""; pins += "Out"; for(int i = inPos - 2; i >= 0; --i) pins += ""; if(numBits > m_numBits) { for(int i = m_numBits; i < numBits; ++i) { m_logic[i] = new LogicIn(LogicConfig()); } } else { for(int i = numBits; i < m_numBits; ++i) { QString id = QString::number(i); // FIXME element removal /* removeDisplayText(id); removeElement(m_logic[i], false); removeNode(id); */ m_logic[i] = 0; } } m_numBits = numBits; }
void ClassTemplate::resolveStringProperty(ClassProperty *aProperty, QSet<ClassProperty *> &aCleanSet, QSet<ClassProperty *> &aCallstack, QSet<ClassProperty *>aAll) { //qDebug() << "resolveStringProperty " << aProperty->name(); if(aCallstack.contains(aProperty)) { qDebug() << "Property tokens circular dependency! " + aProperty->name(); return; } if(aCleanSet.contains(aProperty)) { //resolved already return; } QString value = aProperty->defaultValue(); if((!value.contains("{") && !value.contains("}")) || aProperty->isConst()) { aCleanSet.insert(aProperty); if(!aProperty->isConst()) initializationSection_ += "\t" + aProperty->name() + " = " + wrap(value) + ";\n"; //nothing to resolve return; } QRegularExpression token("\\{([^\\}]+)\\}"); QString temp = value; QRegularExpressionMatchIterator i = token.globalMatch(value); while (i.hasNext()) { QRegularExpressionMatch match = i.next(); QString toReplace = match.captured(0); if(toReplace == "{a}") continue;//skipping article QString token = toReplace; token = token.replace("{", ""); token = token.replace("}", ""); ClassProperty *property = propertyByName(token, aAll); if(!property) { temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "() + \""); } else if(aCleanSet.contains(property)) { temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "() + \""); } else { /*aCallstack.insert(aProperty); resolveStringProperty(property, aCleanSet, aCallstack, aAll);//recursion temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "_ + \""); aCallstack.remove(aProperty);*/ qDebug() << "Pattern contains non-const tokens: " + value; } } aCleanSet.insert(aProperty); initializationSection_ += "\t" + aProperty->name() + " = " + wrap(temp) + ";\n"; }