{
QList<QString> list;
QMultiMap<QString,QString>keyvalue;
va_list p;
va_start(p,key);
char *arg;
int cont=0;
int ncondition=0;
while ((arg=va_arg(p,char *))){
if(toQString(arg)=="")break;
cont++;
int cnd=cont%2;
if (cnd==1){
keyvalue.insert(kv[0].trimmed(),kv[1].trimmed());
}else if (cnd==0){
conditions.push_back(toQString(arg));
ncondition++;
}
}
va_end(p);
QMapIterator<QString, QString> m(keyvalue);
if(cont==0){
for(int i=0;i<data.size();i++)
list+=getValues(key,data[i]);
}else{
for(int i=0;i<data.size();i++){
if(ExistKey(key,data[i])){
m.toFront();
while (m.hasNext()) {
m.next();
if(ExistValue(m.key(),m.value(),data[i]))
lists.append(getValues(key,data[i]));
}
/*m.toBack();
while (m.hasPrevious()){
m.previous();
QString v=m.value();
if(ExistValue(m.key(),m.value(),data[i]))
lists.append(getValues(key,data[i]));
}*/
}
}
}
for (int i=0;i<lists.count();i++)
if(i==0)
list=lists[0];
else
list=QSlogical(list,lists[i],conditions[i-1]);
return list;
}
QStringList COMMANDS::select(QString key,...)
{
QList<QString> list;
QStringList conditions;
QMultiMap<QString,QString>keyvalue;
va_list p;
va_start(p,key);
char *arg;
int cont=0;
int ncondition=0;
while ((arg=va_arg(p,char *))){
if(toQString(arg)=="")break;
cont++;
int cnd=cont%2;
if (cnd==1){
QStringList kv=toQString(arg).split("==");
keyvalue.insert(kv[0].trimmed(),kv[1].trimmed());
}else if (cnd==0){
conditions.push_back(toQString(arg));
ncondition++;
}
}
va_end(p);
QVector <QStringList> lists;
QMapIterator<QString, QString> m(keyvalue);
if(cont==0){
for(int i=0;i<data.size();i++)
list+=getValues(key,data[i]);
}else{
for(int i=0;i<data.size();i++){
if(ExistKey(key,data[i])){
m.toFront();
while (m.hasNext()) {
m.next();
if(ExistValue(m.key(),m.value(),data[i]))
lists.append(getValues(key,data[i]));
}
/*m.toBack();
while (m.hasPrevious()){
m.previous();
QString v=m.value();
if(ExistValue(m.key(),m.value(),data[i]))
lists.append(getValues(key,data[i]));
}*/
}
}
}
for (int i=0;i<lists.count();i++)
if(i==0)
list=lists[0];
else
list=QSlogical(list,lists[i],conditions[i-1]);
return list;
}
To copy to clipboard, switch view to plain text mode
Bookmarks