bool OperationNodeScript::handleTableCases(int index, const NodeValue& vright, const QString &operation,
                                              const QString& relation, SymbolTable &symbols, ExecutionContext *ctx) {
    if ( index >= vright.size())
        return false;

    QString expr;
    if ( SymbolTable::isNumerical(vright[index]) && SymbolTable::isDataLink(_value[index])){
        expr = QString("%1(%2,%3,%4,%5)").arg(operation).arg(_value.toString(index)).
                                          arg(additionalInfo(ctx,_value.toString(index))).
                                          arg(vright.toDouble(index)).arg(relation);
    } else if (SymbolTable::isNumerical(_value[index]) && SymbolTable::isDataLink(vright[index])){
        expr = QString("%1(%2,%3,%4, %5)").arg(operation).arg(vright.toString(index)).
                                           arg(additionalInfo(ctx,vright.toString(index))).
                                           arg(_value.toDouble(index)).arg(relation);
    } else if (SymbolTable::isDataLink(_value[index]) && SymbolTable::isDataLink(vright[index])) {
        expr = QString("%1(%2,%3,%4,%5)").arg(operation).arg(vright.toString(index)).arg(_value.toString(index)).arg(relation);
    } else if (SymbolTable::isDataLink(vright[index]) && SymbolTable::isNumerical(_value[index])) {
        expr = QString("%1(%2,%3,%4,%5)").arg(operation).arg(vright.toString(index)).arg(_value.toDouble(index)).arg(relation);
    }

    bool ok = Ilwis::commandhandler()->execute(expr, ctx,symbols);
    if ( !ok || ctx->_results.size() != 1)
        return false;
    _value = {ctx->_results[0], NodeValue::ctID};
    return true;
}
Example #2
0
QString TermNode::getName(const NodeValue& var) const {
    QString name = var.toString();
    if (name != sUNDEF)
        return name;
//    QString typeName = var.typeName();
//    if ( typeName == "Ilwis::IRasterCoverage") {
//        Ilwis::IRasterCoverage raster = var.value<Ilwis::IRasterCoverage>();
//        name = raster->name();
//    }
//    if ( typeName == "Coordinate") {
//        name = var.id();
//    }
//    if ( typeName == "Voxel") {
//        name = var.id();
//    }
    return var.id();
}