12 #include "AuxIndexStructures_c.h"
13 #include "AuxIndexStructures.h"
14 #include "macros_impl.h"
28 int faiss_RangeSearchResult_new(FaissRangeSearchResult** p_rsr, idx_t nq) {
30 *p_rsr =
reinterpret_cast<FaissRangeSearchResult*
>(
36 int faiss_RangeSearchResult_new_with(FaissRangeSearchResult** p_rsr, idx_t nq,
int alloc_lims) {
38 *p_rsr =
reinterpret_cast<FaissRangeSearchResult*
>(
46 int faiss_RangeSearchResult_do_allocation(FaissRangeSearchResult* rsr) {
59 void faiss_RangeSearchResult_lims(FaissRangeSearchResult* rsr,
size_t** lims) {
60 *lims =
reinterpret_cast<RangeSearchResult*
>(rsr)->lims;
65 void faiss_RangeSearchResult_labels(FaissRangeSearchResult* rsr, idx_t** labels,
float** distances) {
68 *distances = sr->distances;
73 int faiss_IDSelector_is_member(const FaissIDSelector* sel, idx_t
id) {
74 return reinterpret_cast<const IDSelector*
>(sel)->is_member(
id);
80 DEFINE_GETTER(IDSelectorRange, idx_t, imax)
82 int faiss_IDSelectorRange_new(FaissIDSelectorRange** p_sel, idx_t imin, idx_t imax) {
84 *p_sel =
reinterpret_cast<FaissIDSelectorRange*
>(
85 new IDSelectorRange(imin, imax)
94 int faiss_IDSelectorBatch_new(FaissIDSelectorBatch** p_sel,
long n, const idx_t* indices) {
96 *p_sel =
reinterpret_cast<FaissIDSelectorBatch*
>(
97 new IDSelectorBatch(n, indices)
107 DEFINE_GETTER(
BufferList,
size_t, buffer_size)
108 DEFINE_GETTER(BufferList,
size_t, wp)
110 int faiss_BufferList_append_buffer(FaissBufferList* bl) {
112 reinterpret_cast<BufferList*
>(bl)->append_buffer();
117 int faiss_BufferList_new(FaissBufferList** p_bl,
size_t buffer_size) {
119 *p_bl =
reinterpret_cast<FaissBufferList*
>(
120 new BufferList(buffer_size)
126 int faiss_BufferList_add(FaissBufferList* bl, idx_t
id,
float dis) {
128 reinterpret_cast<BufferList*
>(bl)->add(
id, dis);
135 int faiss_BufferList_copy_range(
136 FaissBufferList* bl,
size_t ofs,
size_t n, idx_t *dest_ids,
float *dest_dis) {
138 reinterpret_cast<BufferList*
>(bl)->copy_range(ofs, n, dest_ids, dest_dis);
145 int faiss_RangeSearchPartialResult_new(
146 FaissRangeSearchPartialResult** p_res, FaissRangeSearchResult* res_in) {
148 *p_res =
reinterpret_cast<FaissRangeSearchPartialResult*
>(
150 reinterpret_cast<RangeSearchResult*>(res_in))
156 int faiss_RangeSearchPartialResult_finalize(
157 FaissRangeSearchPartialResult* res) {
165 int faiss_RangeSearchPartialResult_set_lims(
166 FaissRangeSearchPartialResult* res) {
174 int faiss_RangeSearchPartialResult_set_result(
175 FaissRangeSearchPartialResult* res,
int incremental) {
178 static_cast<bool>(incremental));
185 DEFINE_GETTER_SUBCLASS_PERMISSIVE(QueryResult, RangeSearchPartialResult, FaissRangeSearchPartialResult*, pres)
187 int faiss_RangeSearchPartialResult_new_result(
188 FaissRangeSearchPartialResult* res, idx_t qno, FaissQueryResult** qr) {
191 RangeSearchPartialResult::QueryResult* q =
192 &
reinterpret_cast<RangeSearchPartialResult*
>(res)->new_result(qno);
194 *qr =
reinterpret_cast<FaissQueryResult*
>(q);
200 int faiss_QueryResult_add(FaissQueryResult* qr,
float dis, idx_t
id) {
202 reinterpret_cast<RangeSearchPartialResult::QueryResult*
>(qr)->add(dis,
id);
the entries in the buffers are split per query
idx_t * labels
result for query i is labels[lims[i]:lims[i+1]]