All pastes #156560 Raw Edit

Miscellany

public text v1 · immutable
#156560 ·published 2006-08-31 21:09 UTC
rendered paste body
/* yes this is ugly, i have to change the interface */
DBusMessageWriter&
DBusMessageWriter::operator<<(const ClientInterface::Hits& s) {
    DBusMessageIter sub;
    DBusMessageIter ssub;
    DBusMessageIter sssub;
    dbus_message_iter_open_container(&it, DBUS_TYPE_ARRAY,
        "sdsssxxa{ss}", &sub);
    vector<jstreams::IndexedDocument>::const_iterator i;
    for (i=s.hits.begin(); i!=s.hits.end(); ++i) {
        const char* c = i->uri.c_str();
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
        double d = i->score;
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_DOUBLE, &d);
        c = i->fragment.c_str();
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
        c = i->mimetype.c_str();
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
        c = i->sha1.c_str();
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
        int64_t n = i->size;
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT64, &n);
        n = i->mtime;
        dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT64, &n);
        dbus_message_iter_open_container(&sub, DBUS_TYPE_ARRAY, "{ss}", &ssub);
        map<string, string>::const_iterator j;
        for (j = i->properties.begin(); j != i->properties.end(); ++j) {
            dbus_message_iter_open_container(&ssub, DBUS_TYPE_DICT_ENTRY, 0,
                &sssub);
            c = j->first.c_str();
            dbus_message_iter_append_basic(&sssub, DBUS_TYPE_STRING, &c);
            c = j->second.c_str();
            dbus_message_iter_append_basic(&sssub, DBUS_TYPE_STRING, &c);
            dbus_message_iter_close_container(&ssub, &sssub);
        }
        dbus_message_iter_close_container(&sub, &ssub);
    }
    dbus_message_iter_close_container(&it, &sub);
    printf("%i results\n", s.hits.size());
    return *this;
}