128 const AttributeList& attribute_list,
129 vector<coral_attribute_fetcher_t>& payload_fetchers)
131 const Py_ssize_t
count = to_fetch ? PySequence_Size(to_fetch) : 0;
133 for (Py_ssize_t i = 0; i <
count; i++)
135 PyObject *py_name = PySequence_GetItem(to_fetch, i);
136 const char *name = _PyUnicode_AsString(py_name);
137 const string type = attribute_list[name].specification().typeName();
141 auto pff = pf.target<
PyObject* (*)(
const AttributeList&)>();
145 payload_fetchers.push_back(std::move(pf));
190 ValidityKey since, ValidityKey until,
191 const ChannelSelection &cs = ChannelSelection::all(),
195 PyObject *inner_object_converter = NULL,
204 const Py_ssize_t
count = to_fetch ? PySequence_Size(to_fetch) : 0;
211 vector<coral_attribute_fetcher_t> payload_fetchers;
214 while (objects->hasNext())
218 PyObject *py_payload_tuple = PyTuple_New(object->size());
219 unsigned int payload_index = 0;
222 for (payload = object->begin();
223 payload != object->end();
224 ++payload, ++payload_index)
237 for (Py_ssize_t i = 0; i <
count; i++)
238 PyTuple_SET_ITEM(py_payload, i, payload_fetchers[i](*payload));
247 Py_DECREF(py_payload_tuple);
252 PyTuple_SET_ITEM(py_payload_tuple, payload_index, py_payload);
257 PyTuple_SET_ITEM(one, 0,
make_iov_key(iovkey_wrapper, object->since()));
258 PyTuple_SET_ITEM(one, 1,
make_iov_key(iovkey_wrapper, object->until()));
260 PyTuple_SET_ITEM(one, 2, PyLong_FromLong(object->channelId()));
263 PyTuple_SET_ITEM(one, 3, py_payload_tuple);
275 PyList_Append(result, one);
PyObject * browse_coracool(IDatabasePtr cooldb, const string &folder, ValidityKey since, ValidityKey until, const ChannelSelection &cs=ChannelSelection::all(), const char *tag="", PyObject *to_fetch=NULL, PyObject *object_converter=NULL, PyObject *inner_object_converter=NULL, PyObject *iovkey_wrapper=NULL)