#include "global.h"
#include <QString>
#include <QDateTime>
#include <QVariant>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlField>
Functions | |
QString | generateKey (const QDateTime ×tamp, const QString &component) |
bool | copyFile (char *dest, char *src) |
QVariant | formulaRead (const QVariant &data) |
QVariant | formulaWrite (const QVariant &data) |
quint64 | cantor (const int &x, const int &y) |
int | seekRow (QSqlQuery query, const QSqlRecord &record) |
quint64 cantor | ( | const int & | x, | |
const int & | y | |||
) |
{
return ((x+y)*(x+y)+x-y)/2;
}
bool copyFile | ( | char * | dest, | |
char * | src | |||
) |
{ FILE *dp,*sp; int c; sp = fopen(src,"rb"); if (!sp) { qWarning() << "Can't open " << src; return FALSE; } dp = fopen(dest,"wb"); if (!dp) { qWarning() << "Can't open " << dest; return FALSE; } while (1) { c = getc(sp); if (feof(sp)) break; fputc(c,dp); } fclose(sp); fclose(dp); return TRUE; }
Referenced by CalibrationsModel::data().
{ return data.toString().replace("$1", "RAW"); }
{ int p = 0; // Our key is the left part of the ISODate, cut off on the component. // So for month, we take the first 7 characters of YYYY-MM-DDTHH:MM:SS (i.e. // ISO date format) if (component == QString()) return QString(); else if (component == "Week") { int year; int week = timestamp.date().weekNumber(&year); return QString::number(year).append("-w").append(QString::number(week)); } else if (component == "Year") p = 4; else if (component == "Month") p = 7; else if (component == "Day") p = 10; else if (component == "Hour") p = 13; else if (component == "Minute") p = 16; else if (component == "Second") p = 19; Q_ASSERT(p); return timestamp.toString(Qt::ISODate).left(p); }
int seekRow | ( | QSqlQuery | query, | |
const QSqlRecord & | record | |||
) |
Referenced by MappedBaseEditor::onQueryChange(), MappedBaseEditor::onSubmitButtonPress(), and MappedBaseEditor::setCurrent().
{ // note that query is passed by value: this might be a performance bottleneck for large queries. if (!query.isActive() || record.isEmpty()) return -1; // check whether query is empty Q_ASSERT(query.isSelect()); query.first(); if (!query.isValid()) return -1; // check equal fields exist and their data types are the same, and in mean time, // set up the FieldMap. struct FieldMap { FieldMap() : query(0), record(0) {} int query; int record; } map[record.count()]; for(int i = 0; i < record.count(); i++){ map[i].record = i; map[i].query = query.record().indexOf(record.fieldName(i)); if (map[i].query == -1 || query.record().field(map[i].query).type() != record.field(map[i].record).type()) return -1; } // seek row int i = 0; //field number int count = record.count(); int max = record.count() - 1; do { for (i = 0; i < count; i++) { //qDebug() << /*j*/ << "of" << query.size() << i << query.value(map[i].query) << record.value(map[i].record); if (query.value(map[i].query) != record.value(map[i].record)) break; if (i == max) return query.at(); } } while (query.next()); return -1; }