示例#1
0
static void renderExtensionFieldMaybe (int xftype, const tagEntryInfo *const tag, json_t *response)
{
	const char *fname = getFieldName (xftype);

	if (fname && isFieldRenderable (xftype) && isFieldEnabled (xftype) && doesFieldHaveValue (xftype, tag))
	{
		switch (xftype)
		{
		case FIELD_LINE_NUMBER:
			json_object_set_new (response, fname,
					     json_integer (tag->lineNumber));
			break;
		case FIELD_FILE_SCOPE:
			json_object_set_new (response, fname,
					     json_boolean(1));
			break;
		default:
			json_object_set_new (response, fname,
					     escapeFieldValue (tag, xftype, false));
		}
	}
}
示例#2
0
		enableField (FIELD_SCOPE_KEY, true, false);
		enableField (FIELD_SCOPE_KIND_LONG, true, false);
	}

	for (k = FIELD_EXTENSION_START; k <= FIELD_BUILTIN_LAST; k++)
		renderExtensionFieldMaybe (k, tag, response);
}

static int writeJsonEntry (tagWriter *writer CTAGS_ATTR_UNUSED,
			       MIO * mio, const tagEntryInfo *const tag)
{
	json_t *response = json_pack ("{ss ss ss so}",
		"_type", "tag",
		"name", tag->name,
		"path", tag->sourceFileName,
		"pattern", escapeFieldValue(tag, FIELD_PATTERN, true));

	if (includeExtensionFlags ())
	{
		addExtensionFields (response, tag);
		addParserFields (response, tag);
	}

	char *buf = json_dumps (response, JSON_PRESERVE_ORDER);
	int length = mio_printf (mio, "%s\n", buf);

	free (buf);
	json_decref (response);

	return length;
}
示例#3
0
	   That cannot be changed to keep the compatibility of tags file format.
	   Use FIELD_SCOPE_KEY and FIELD_SCOPE_KIND_LONG instead. */
	if (isFieldEnabled (FIELD_SCOPE))
	{
		enableField (FIELD_SCOPE_KEY, true, false);
		enableField (FIELD_SCOPE_KIND_LONG, true, false);
	}

	for (k = FIELD_EXTENSION_START; k <= FIELD_BUILTIN_LAST; k++)
		renderExtensionFieldMaybe (k, tag, response);
}

static int writeJsonEntry (tagWriter *writer CTAGS_ATTR_UNUSED,
			       MIO * mio, const tagEntryInfo *const tag)
{
	json_t *pat = escapeFieldValue(tag, FIELD_PATTERN, true);
	json_t *response = json_pack ("{ss ss ss sO}",
		"_type", "tag",
		"name", tag->name,
		"path", tag->sourceFileName,
		"pattern", pat);
	json_decref (pat);

	if (includeExtensionFlags ())
	{
		addExtensionFields (response, tag);
		addParserFields (response, tag);
	}

	int length = 0;
	char *buf = json_dumps (response, JSON_PRESERVE_ORDER);
QMap<int, QString> EditableResultsetTableModel::generateDml(const QString &schema, const QString &table, const QString &dblink) const
{
    QMap<int, QString> result;
    QString dml;
    QString fullTableName = schema.isEmpty() ? QString("\"%1\"").arg(table) : QString("\"%1\".\"%2\"").arg(schema, table);
    if(!dblink.isEmpty()){
        fullTableName.append("@").append(dblink);
    }

    QString fieldValue;

    QString colNames = joinEnclosed(columnMetadata->columnTitles, ", ", "\"", columnMetadata->columnTitles.size()-1);

    for(int i=0; i<insertedRows.size(); ++i){
        dml = QString("INSERT INTO %1 (%2) VALUES (").arg(fullTableName, colNames);
        for(int k=0; k<columnMetadata->columnTitles.size()-1; ++k){
            fieldValue = index(i, k).data().toString();
            escapeFieldValue(fieldValue, columnMetadata.data(), k+1, true); //colIx is 1 based

            if(k>0){
                dml.append(", ");
            }

            dml.append(fieldValue);
        }

        dml.append(")");

        result[i] = dml;
    }

    QMapIterator< int, QMap<int, QString> > i(changedData);
    while (i.hasNext()) {
        i.next();
        dml.clear();

        if(deletedRows.contains(i.key())){
            continue;
        }

        QMapIterator< int, QString > i2(i.value());
        while (i2.hasNext()) {
            i2.next();

            if(!dml.isEmpty()){
                dml.append(", ");
            }

            QString columnName = columnMetadata->columnTitles.at(i2.key());
            fieldValue = i2.value();
            escapeFieldValue(fieldValue, columnMetadata.data(), i2.key()+1, true); //colIx is 1 based
            dml.append(QString("\"%1\" = %2").arg(columnName, fieldValue));
        }

        Q_ASSERT(!dml.isEmpty());

        dml.prepend(QString("UPDATE %1 SET ").arg(fullTableName));

        int modelRow = i.key() + insertedRows.size();

        dml.append(QString(" WHERE ROWID = '%1'").arg(index(modelRow, columnCount()-1).data().toString()));

        result[modelRow] = dml;
    }

    for(int i=0; i<deletedRows.size(); ++i){
        int modelRow = deletedRows.at(i) + insertedRows.size();

        dml = QString("DELETE FROM %1 WHERE ROWID = '%2'").arg(fullTableName, index(modelRow, columnCount()-1).data().toString());
        result[modelRow] = dml;
    }

    return result;
}