| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | #include<iostream> |
| |
|
| | #include "rs_variabledict.h" |
| |
|
| |
|
| | #include "rs_debug.h" |
| |
|
| | |
| | |
| | |
| | void RS_VariableDict::clear() { |
| | variables.clear(); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | void RS_VariableDict::add(const QString& key, |
| | const QString& value, int code) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| |
|
| | variables.insert(key, RS_Variable(value, code)); |
| | } |
| |
|
| | void RS_VariableDict::add(const QString& key, |
| | const QString& value, int code, int type) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| |
|
| | RS_Variable result; |
| | bool ok {false}; |
| | switch (type) { |
| | case RS2::VariableString: { |
| | ok = true; |
| | result = RS_Variable(value, code); |
| | break; |
| | } |
| | case RS2::VariableInt: { |
| | int val = value.toInt(&ok); |
| | if (ok) { |
| | result = RS_Variable(val, code); |
| | } |
| | break; |
| | } |
| | case RS2::VariableDouble: { |
| | double val = value.toDouble(&ok); |
| | if (ok) { |
| | result = RS_Variable(val, code); |
| | } |
| | break; |
| | } |
| | case RS2::VariableVector: { |
| | int separatorPos = value.trimmed().indexOf(' '); |
| | if (separatorPos == -1) { |
| | break; |
| | } |
| | QString left = value.left(separatorPos); |
| | QString right = value.right(separatorPos); |
| | double x = left.toDouble(&ok); |
| | if (!ok) { |
| | break; |
| | } |
| | double y = right.toDouble(&ok); |
| | if (!ok) { |
| | break; |
| | } |
| | RS_Vector vect(x, y); |
| | result = RS_Variable(vect, code); |
| | break; |
| | } |
| | default: |
| | ok = false; |
| | } |
| | if (ok) { |
| | variables.insert(key, result); |
| | } |
| | else { |
| | RS_DEBUG->print(QString("RS_VariableDict::addVariable(): Cant convert var from string. Name: %1, value: %2.").arg(key).arg(value)); |
| | } |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | void RS_VariableDict::add(const QString& key, int value, int code) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| |
|
| | variables.insert(key, RS_Variable(value, code)); |
| | } |
| |
|
| | void RS_VariableDict::add(const QString& key, bool value, int code) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| | variables.insert(key, RS_Variable(value ? 1: 0, code)); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_VariableDict::add(const QString& key, double value, int code) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| | variables.insert(key, RS_Variable(value, code)); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_VariableDict::add(const QString& key, |
| | const RS_Vector& value, int code) { |
| | RS_DEBUG->print("RS_VariableDict::addVariable()"); |
| |
|
| | if (key.isEmpty()) { |
| | RS_DEBUG->print(RS_Debug::D_WARNING, |
| | "RS_VariableDict::addVariable(): No empty keys allowed."); |
| | return; |
| | } |
| |
|
| | variables.insert(key, RS_Variable(value, code)); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | RS_Vector RS_VariableDict::getVector(const QString& key, const RS_Vector& def) const { |
| | RS_Vector ret; |
| |
|
| | auto i = variables.find(key); |
| | if (variables.end() != i && RS2::VariableVector == i.value().getType()) { |
| | ret = i.value().getVector(); |
| | } |
| | else { |
| | ret = def; |
| | } |
| |
|
| | return ret; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | QString RS_VariableDict::getString(const QString& key, const QString& def) const { |
| | QString ret; |
| |
|
| | RS_DEBUG->print("RS_VariableDict::getString: key: '%s'", key.toLatin1().data()); |
| |
|
| | auto i = variables.find(key); |
| | if (variables.end() != i && RS2::VariableString == i.value().getType()) { |
| | ret = i.value().getString(); |
| | } |
| | else { |
| | ret = def; |
| | } |
| |
|
| | return ret; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | int RS_VariableDict::getInt(const QString& key, int def) const { |
| | int ret = 0; |
| |
|
| | auto i = variables.find(key); |
| | if (variables.end() != i && RS2::VariableInt == i.value().getType()) { |
| | ret = i.value().getInt(); |
| | } |
| | else { |
| | ret = def; |
| | } |
| |
|
| | return ret; |
| | } |
| |
|
| | bool RS_VariableDict::getBool(const QString& key, bool def) const { |
| | bool defValue = def ? 1 : 0; |
| | return getInt(key, defValue) != 0; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | double RS_VariableDict::getDouble(const QString& key, double def) const { |
| | double ret = 0.0; |
| |
|
| | auto i = variables.find(key); |
| | if (variables.end() != i && RS2::VariableDouble == i.value().getType()) { |
| | ret = i.value().getDouble(); |
| | } |
| | else { |
| | ret = def; |
| | } |
| |
|
| | return ret; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_VariableDict::remove(const QString& key) { |
| | RS_DEBUG->print("RS_VariableDict::removeVariable()"); |
| |
|
| | |
| | variables.remove(key); |
| | } |
| |
|
| | |
| | |
| | |
| | std::ostream& operator <<(std::ostream& os, RS_VariableDict& d) { |
| | os << "Variables: \n"; |
| | auto it = d.variables.begin(); |
| | while (it != d.variables.end()) { |
| | os << it.key().toLatin1().data() << ": "; |
| | switch (it.value().getType()) { |
| | case RS2::VariableVoid: |
| | os << "void\n"; |
| | break; |
| | case RS2::VariableInt: |
| | os << "int " << it.value().getInt() << "\n"; |
| | break; |
| | case RS2::VariableDouble: |
| | os << "double " << it.value().getDouble() << "\n"; |
| | break; |
| | case RS2::VariableVector: |
| | os << "vector " << it.value().getVector() << "\n"; |
| | break; |
| | case RS2::VariableString: |
| | os << "string " << it.value().getString().toLatin1().data() << "\n"; |
| | break; |
| | } |
| | ++it; |
| | } |
| | os << std::endl; |
| |
|
| | return os; |
| | } |
| |
|