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)); } } }
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; }
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; }