static int prepare_data(PyObject *obj, xorn_obtype_t *type_return, const void **data_return) { if (PyObject_TypeCheck(obj, &ArcType)) prepare_arc((Arc *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &BoxType)) prepare_box((Box *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &CircleType)) prepare_circle((Circle *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &ComponentType)) prepare_component((Component *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &LineType)) prepare_line((Line *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &NetType)) prepare_net((Net *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &PathType)) prepare_path((Path *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &PictureType)) prepare_picture((Picture *)obj, type_return, data_return); else if (PyObject_TypeCheck(obj, &TextType)) prepare_text((Text *)obj, type_return, data_return); else return -1; return 0; }
std::shared_ptr<brig::rowset> layer_raster::attributes(const frame& fr) { size_t level(get_level(fr)); auto tbl(get_table_def(level)); for (size_t i(0); i < tbl.columns.size(); ++i) if (tbl.columns[i].name == m_raster.levels[level].geometry.qualifier) tbl.columns[i].query_value = prepare_box(fr); tbl.query_rows = int(brig::PageSize); return get_provider()->select(tbl); }