void string_terms(const char *prefix, const term_t &str, term_list_t &terms) { term_t ret(prefix); size_t pstart=0; while (pstart!=str.npos) { size_t pend=str.find_first_of(" \t\n\r", pstart); if (pend==str.npos) { add_term(prefix, term_t(str.begin()+pstart, str.end()), terms); break; } add_term(prefix, term_t(str.begin()+pstart, str.begin()+pend), terms); pstart=pend+1; } }
*/ #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; } /*