PlTerm variant2term(const QVariant& v) { switch (v.type()) { case QVariant::Char: case QVariant::String: case QVariant::ByteArray: return PlTerm(v.toString().toStdWString().data()); case QVariant::Int: return PlTerm(long(v.toInt())); case QVariant::Double: return PlTerm(v.toDouble()); case QVariant::List: { PlTerm t; PlTail l(t); foreach(QVariant e, v.toList()) l.append(variant2term(e)); l.close(); return t; } default: return PlTerm(); } }
*/ #include <swiaudioblob.h> /* Gets an audioblob containing the data itself (not point to data!!!!) and writes each value on a prolog list Do the other way around */ PREDICATE(vectorBlob_to_list, 2) { //+ reference to blob //- list term_t blob = PL_new_term_ref(); blob = term_t(PlTerm(A1)); std::vector<float> data = AudioDataConversion::term_to_audio_vector(blob); PlTerm list; PlTail tail(list); for(size_t j=0; j<data.size(); j++){ tail.append((double)data[j]); } tail.close(); return A2 = list; } /*
// Load database into the engine bool SWIPLContainer::consult(const QString &filename) { return PlCall("consult", PlTerm(toPlString(filename))); }