#ifndef FAISS_AUX_INDEX_STRUCTURES_C_H
#define FAISS_AUX_INDEX_STRUCTURES_C_H
#include "../Index_c.h"
#include "../faiss_c.h"
#ifdef __cplusplus
extern "C" {
#endif
FAISS_DECLARE_CLASS(RangeSearchResult)
FAISS_DECLARE_GETTER(RangeSearchResult, size_t, nq)
int faiss_RangeSearchResult_new(FaissRangeSearchResult** p_rsr, idx_t nq);
int faiss_RangeSearchResult_new_with(
FaissRangeSearchResult** p_rsr,
idx_t nq,
int alloc_lims);
int faiss_RangeSearchResult_do_allocation(FaissRangeSearchResult* rsr);
FAISS_DECLARE_DESTRUCTOR(RangeSearchResult)
FAISS_DECLARE_GETTER(RangeSearchResult, size_t, buffer_size)
void faiss_RangeSearchResult_lims(FaissRangeSearchResult* rsr, size_t** lims);
void faiss_RangeSearchResult_labels(
FaissRangeSearchResult* rsr,
idx_t** labels,
float** distances);
FAISS_DECLARE_CLASS(IDSelector)
FAISS_DECLARE_DESTRUCTOR(IDSelector)
int faiss_IDSelector_is_member(const FaissIDSelector* sel, idx_t id);
FAISS_DECLARE_CLASS(IDSelectorRange)
FAISS_DECLARE_DESTRUCTOR(IDSelectorRange)
FAISS_DECLARE_GETTER(IDSelectorRange, idx_t, imin)
FAISS_DECLARE_GETTER(IDSelectorRange, idx_t, imax)
int faiss_IDSelectorRange_new(
FaissIDSelectorRange** p_sel,
idx_t imin,
idx_t imax);
FAISS_DECLARE_CLASS(IDSelectorBatch)
FAISS_DECLARE_GETTER(IDSelectorBatch, int, nbits)
FAISS_DECLARE_GETTER(IDSelectorBatch, idx_t, mask)
int faiss_IDSelectorBatch_new(
FaissIDSelectorBatch** p_sel,
size_t n,
const idx_t* indices);
FAISS_DECLARE_CLASS(IDSelectorBitmap)
FAISS_DECLARE_DESTRUCTOR(IDSelectorBitmap)
FAISS_DECLARE_GETTER(IDSelectorBitmap, size_t, n)
FAISS_DECLARE_GETTER(IDSelectorBitmap, const uint8_t*, bitmap)
int faiss_IDSelectorBitmap_new(
FaissIDSelectorBitmap** p_sel,
size_t n,
const uint8_t* bitmap);
FAISS_DECLARE_CLASS(IDSelectorNot)
int faiss_IDSelectorNot_new(
FaissIDSelectorNot** p_sel,
const FaissIDSelector* sel);
FAISS_DECLARE_CLASS(IDSelectorAnd)
int faiss_IDSelectorAnd_new(
FaissIDSelectorAnd** p_sel,
const FaissIDSelector* lhs_sel,
const FaissIDSelector* rhs_sel);
FAISS_DECLARE_CLASS(IDSelectorOr)
int faiss_IDSelectorOr_new(
FaissIDSelectorOr** p_sel,
const FaissIDSelector* lhs_sel,
const FaissIDSelector* rhs_sel);
FAISS_DECLARE_CLASS(IDSelectorXOr)
int faiss_IDSelectorXOr_new(
FaissIDSelectorXOr** p_sel,
const FaissIDSelector* lhs_sel,
const FaissIDSelector* rhs_sel);
FAISS_DECLARE_CLASS(BufferList)
FAISS_DECLARE_DESTRUCTOR(BufferList)
FAISS_DECLARE_GETTER(BufferList, size_t, buffer_size)
FAISS_DECLARE_GETTER(BufferList, size_t, wp)
typedef struct FaissBuffer {
idx_t* ids;
float* dis;
} FaissBuffer;
int faiss_BufferList_append_buffer(FaissBufferList* bl);
int faiss_BufferList_new(FaissBufferList** p_bl, size_t buffer_size);
int faiss_BufferList_add(FaissBufferList* bl, idx_t id, float dis);
int faiss_BufferList_copy_range(
FaissBufferList* bl,
size_t ofs,
size_t n,
idx_t* dest_ids,
float* dest_dis);
FAISS_DECLARE_CLASS(RangeSearchPartialResult)
FAISS_DECLARE_CLASS(RangeQueryResult)
FAISS_DECLARE_GETTER(RangeQueryResult, idx_t, qno)
FAISS_DECLARE_GETTER(RangeQueryResult, size_t, nres)
FAISS_DECLARE_GETTER(RangeQueryResult, FaissRangeSearchPartialResult*, pres)
int faiss_RangeQueryResult_add(FaissRangeQueryResult* qr, float dis, idx_t id);
FAISS_DECLARE_GETTER(RangeSearchPartialResult, FaissRangeSearchResult*, res)
int faiss_RangeSearchPartialResult_new(
FaissRangeSearchPartialResult** p_res,
FaissRangeSearchResult* res_in);
int faiss_RangeSearchPartialResult_finalize(FaissRangeSearchPartialResult* res);
int faiss_RangeSearchPartialResult_set_lims(FaissRangeSearchPartialResult* res);
int faiss_RangeSearchPartialResult_new_result(
FaissRangeSearchPartialResult* res,
idx_t qno,
FaissRangeQueryResult** qr);
FAISS_DECLARE_CLASS(DistanceComputer)
int faiss_DistanceComputer_set_query(FaissDistanceComputer* dc, const float* x);
int faiss_DistanceComputer_vector_to_query_dis(
FaissDistanceComputer* dc,
idx_t i,
float* qd);
int faiss_DistanceComputer_symmetric_dis(
FaissDistanceComputer* dc,
idx_t i,
idx_t j,
float* vd);
FAISS_DECLARE_DESTRUCTOR(DistanceComputer)
#ifdef __cplusplus
}
#endif
#endif